GuiguiAbloc

sécurité

Palo Alto Networks : Faut-il repenser notre vision du Firewall ?

par guiguiabloc le 10 avr, 2011, sous réseau, sécurité

Photographe:Cpl Barry Lloyd RLC Crédit : www.defenceimages.mod.uk

Aujourd’hui je vous propose de vous parler d’une nouvelle génération de Firewall mais aussi, je l’espère, vous pousser à la réflexion sur notre conception du firewall telle qu’on l’a aujourd’hui en se demandant, si, après tout, on n’est pas un peu rétrograde.

Petit historique.

Palo Alto Networks est une société créée en 2005 par un monsieur très connu du monde de la sécurité : Nir Zuk.
Si son nom ne vous dit rien (bouh ! Honte à vous, que vous soyez flageller sur la place publique et que les corbeaux viennent écorcher votre peau blanchâtre (euh non, je suis un peu trop extrémiste là…) ), sachez que Nir Zuk est l’un des créateurs du Stateful inspection de Checkpoint, l’ancien directeur technique de Netscreen Technologies (racheté par Juniper) et aussi créateur d’un des premiers IPS du marché via son ancienne société OneSecure. Bref, un type qui s’y connait « un peu » ;)

Notre vision généraliste du Firewall telle qu’on l’a aujourd’hui, est un filtrage de niveau 3 et 4, parfois 7 de la couche OSI (allez hop, pour ceux qui aurait rater mes anciens billets vous martelant d’avoir un minimum de connaissance des couches OSI, on y retourne), ce à quoi l’on va rajouter, bien sûr, cette fameuse inspection stateful.

pause

« Mais dites moi Monsieur Abloc, c’est quoi ça l’inspection Stateful ??? »

« Je te remercie de poser la question, jeune padawan, mais vu que tu es un fidèle lecteur, dans ma grande mansuétude, je t’autorise à m’appeler guiguiabloc. »

« Oh merci vous êtes bien bon avec moi ! C’est trop d’honneur »
« De rien mon petit, vas en paix et écoute »

(désolé, une crise passagère…)

Dans un firewall vous allez, au niveau  3, par exemple, autoriser telle adresse ip à accéder à telle autre adresse ip. Au niveau 4, vous allez autoriser cette ip source à accéder depuis un port tcp supérieur à 1023 à accéder au serveur web de l’autre adresse ip sur le port 80.

(pourquoi supérieur à 1023 ? parce qu’une requête cliente vers un serveur prend aléatoirement un port source supérieur à ce nombre, les ports inférieurs à 1023 ne pouvant être « réservé » qu’à des services reconnus (je simplifie hein !)).

D’ailleurs il vous suffit de regarder vos connexions établies pour le voir :

guiguiabloc@Thanatos:~$ netstat -tan | grep 80
tcp        0      0 192.168.8.201:44450     174.36.30.59:80         ESTABLISHED

où 192.168.8.201 est le client et 174.36.30.59, le serveur web.

Donc, remarque aux gens qui configurent leurs firewalls pour la première fois, autoriser le 80 depuis l’extérieur vers l’intérieur pour surfer, bah ça sert à rien (on le voit souvent :p)

Jusqu’à maintenant on est en mode « stateless ».

Le mode stateful va allez jusqu’à la notion de session du protocole TCP.

Quand Kevin veut se connecter au serveur web de Tatiana (qui offre avec gentillesse des apercus non négligeable de son architecture)), en tcp (donc niveau 4 ;) ), il envoit un SYN  (je veux me connecter à toi, Tatiana, t’es trop de la balle), le serveur de Tatiana répond SYN/ACK (j’ai pris connaissance de ton désir passionné de venir visiter mes zolies pages et de contempler la façon dont j’enroule mes câbles), le pc de Kevin renvoit un ACK (oh oui, je veux voir tes zolies pages et tes câbles si bien disposés, merci de me répondre Tatiana (flap,flap, flap)).

C’est ce qu’on appelle un triple-handshake (ou poignée de main à 3 temps). (NB: le flap flap flap ne faisant pas partie de la négociation et je vous interdit dans vos esprits pervers de faire un quelconque rapport entre « hand » et « shake » dans l’exemple ci-dessus ! Ignoble individu que vous êtes !)

En plus, lors de cet échange, des numéros de séquence sont générés et par le client (numéro de séquence initial), repris par le serveur (+1) qui y rajoute ses numéros d’acquittement, que le client reprend aussi.

(je vais pas vous faire un cours sur tcp, Google est votre ami :) )

A cet instant, nous avons une session d’établie que le firewall, en mode stateful connait.

Il va donc considérer que vu que le flux existe et que la session est établie, il est désormais inutile d’analyser les paquets entre le client et le serveur pour cette session tcp, il considère que c’est autorisé (c’est du filtrage dynamique).

En mode Stateful, le firewall a donc connaissance de l’existence ou non d’une session entre deux ips. Il rejettera un paquet tcp de type SYN/ACK s’il n’a pas vu un SYN du client sur cette session auparavant.

L’inspection stateful permet donc un filtrage avancé sur les connexions établies ou non, même si le port tcp est ouvert, il ne sera pas forcément accepté par le firewall.

Exemple d’intrusion en mode stateless (schématiser sans NAT/PAT toussa) :

Le pc client (Thanatos, 192.168.8.201) a un vnc server sur son poste en écoute sur le port 5900.

Le firewall entre lui et internet à une règle de type :

permit tcp host ip client gt 1023 any eq 80

(le client en source port supérieur à 1023 peut aller voir des sites en http sur le port 80).

Je suis sur internet, j’initie une connexion depuis le port 80 (serveur Alixe, 192.168.43.100) vers l’ip du client sur le port 5900, et bien ca passe… :D

Un firewall stateful, lui,  rejettera ce genre de trafic puisque le SYN ne peut venir que du client, pas du serveur web.

NB : Pour les curieux qui voudrait savoir comment j’ai reproduit un mode stateless/stateful dans cet exemple via des ACLs Cisco, voici les règles utilisées (192.168.8.201 est le client, 192.168.43.100 est le serveur)  :

Exemple 1 (stateless) :

permit tcp host 192.168.43.100 eq www any gt 1023

Exemple 2 (stateful) :

permit tcp host 192.168.43.100 eq www any gt 1023 established

Sous votre *BSD favori, il vous suffit de positionner l’option « flags » (S/SA pour un SYN/SYN-ACK).

Bien entendu je simplifie à l’extrème (d’autres éléments entre en jeux) mais j’espère avoir éclairer ceux qui ne connaissait pas ce mode de suivi de transaction entre deux machines.

fin de la pause

Sauf qu’au bout d’un moment, le stateful inspection, le filtrage de niveau 4, on en atteint vite les limites.

Alors, on va rajouter des couches et des couches d’IDS, d’IPS, au détriment souvent des performances du firewall.

Palo Alto Networks propose donc une nouvelle génération de Firewall, avec des  filtrages portant sur :

- l’identifiant de l’utilisateur (on ne gère plus l’ip du poste client mais son identification propre par corrélation avec un ActiveDirectory ou un LDAP, ou au pire en le renvoyant sur un portail captif pour une authentification Radius) (User-id)

- l’application utilisée (j’ouvre le http et j’autorise skype mais pas facebook), mais aussi le contenu qui passe dans le flux (ouh la toi tu fais du tunneling ssh dans du http avec Corkscrew, je te l’interdit) (app-id). Sachez que la liste des applications reconnues par le Palo Alto est assez conséquente et que bien sûr, vous pouvez vous même y définir vos propres applications.

- le contenu des trames cyptées en faisant du « Man-in-the-Middle » SSL pour décrypter en temps réel les flux SSL/HTTPS et regarder ce qu’il y ‘a dedans pour vérifier sa dangerosité (nan nan, ton facebook par SSL, non plus, tu passeras pas)

- l’analyse du contenu des paquets (charge virale, DoS, filtrage URL etc…) (Content-id). Evidemment le Palo Alto ne se base pas uniquement sur l’extension d’un fichier pour en connaitre le contenu ;)

Bien sûr; quitte a faire tout cela bien et rapidement, on va traiter le flux en  1 seule passe et côté hardware, dédier des CPUs à chaque usage avec quelques FPGA pour faire bonne mesure.

Intéressant non ?

« D’accord mon grand, t’es gentil, mais pourquoi tu nous causes de ça ? »

Parce que çà  :

Et oui, j’ai eu la chance d’avoir un des ses boîtiers a la maison :D

Après une formation condensée et efficace (merci Philippe ;) ), on se positionne le PaloAlto en mode bridge derrière la freeteuse.

(Rassurez vous, le boîtier a rapidement rejoint un environnement de production digne de ce nom pour subir la batterie de tests habituels.)

Mais qu’en est-il des premiers résultats ?

Le Firewall Palo Alto peut fonctionner en plusieurs mode :

- le mode TAP, vous le branchez sur un port mirroring ou un boitier TAP justement et il vous ressort l’ensemble du trafic qu’il voit passer (analyse etc…). C’est forcément une première étape pour le brancher dans votre infrastructure. Non intrusif, ce mode vous permet d’avoir déjà une première idée de ce qui passe dans votre réseau (applications utilisées, statistiques de consommation par flux et application etc…)

- le mode bridge (appelé VirtualWire chez eux), en passerelle transparente. Les flux entrent d’un côté et ressortent de l’autre. A ce niveau la, vous coder une règle autorisant tout et vous pouvez petit à petit alimenter les « policy » suivant le trafic que vous voyez.

- le mode routeur/firewall (en couche 3 donc) que tout le monde connait, avec ses interfaces à configurer, ses vlans, ses routes etc… La il remplace votre firewall actuel.

Le Palo Alto a un processeur et une interface dédié au Management.

La CLI ne surprendra pas les habitués de Juniper. C’est clairement du Netscreen OS (rassurez vous, si vous utilisez Vyatta, c’est sensiblement pareil).

Ce qui est flagrant de sa parenté avec les Netscreen, ce sont ses couches VSYS et VROUTER (virtual system et virtual routeur de Netscreen/Juniper). Les zones de type Trust/Untrust sont également là. Bref, clairement, c’est la touche Netscreen qui prédomine.

Côté administration graphique, c’est du web, en ajax… Et là, vous le verrez plus loin, c’est la partie noire du produit.

Quand on prend la bête en main pour la première fois via le port console (standard 9600/8/1 comme pour un Cisco), on configure l’ip de management, gateway, dns pour rapidement pouvoir prendre la main, puis on « pousse » la conf par un « commit ».

Première surprise, le commit, montre en main, prend plus de 2 minutes ! :o

Euh la on commence a avoir des angoisses, un commit à vide (pas de règles, une conf de base)  qui prend tant de temps c’est angoissant. On se dit que ca ira mieux plus tard…

Bref, on laisse tourner et on regarde.

Là les premiers résultats sont bluffants. Tout est clairement identifié, les flux bien sûr, mais également les applications utilisées,

mes tunnels ssh dans le proxy,

les attaques de types Naphta/Slowloris que j’ai envoyé sur un serveur Web, etc..

En testant des règles génériques de types « deny application deezer », c’est redoutable :)

Petit bonus à tester, le man-in-the-middle SSL.

On se génère un certicat SSL dans le boîtier.

On pose un filtrage SSL avec décryption.

Et hop, on teste depuis un navigateur client. Le truc tout bête, allez télécharger le fichier EICAR antivirus en https.

Surprise, le certificat serveur sur le poste client à changer, en regardant en détail , on retrouve notre certificat SSL généré sur le Palo Alto en tant qu’émetteur, et les informations du certificat serveur dans les restes du contenu.

Côté détection, le Palo Alto a décrypter le flux SSL et à trouver la fausse charge virale dans le contenu. Bluffant.

Il se comporte donc comme un proxy forward SSL, agissant en temps qu’intermédiaire entre le serveur et le client, et en profitant pour analyser le contenu qu’il peut bien sur décrypter.

Cela marche également sur https://mail.google.com… Effrayant ;)

Alors bien sûr le navigateur client remonte une alerte sur le certificat qui n’est pas reconnu en tant que Root CA connue mais rien ne vous interdit de signer votre certificat SSL du Palo Alto par une autorité reconnue par les navigateurs, Verisign par exemple).

Maintenant j’en pense quoi ?…

Palo Alto Networks nous pousse vers une nouvelle façon de surveiller et de gérer les flux réseau dans notre infrastructure.

Il est évident que l’on n’a pas attendu leur venue pour faire du filtrage au niveau 7, pour filtrer les requètes SQL via GreenSQL , faire du firewall authentifiant ou du décryptage SSL.

Maintenant, plutôt que réécrire ce qui a été dit, je vous invite à lire les différents documents et comparatifs que Palo Alto a pondu :

http://www.paloaltonetworks.com/literature/index.php

Toutefois, c’est clairement le type de Firewall a positionner entre vos utilisateurs et vos serveurs.

En frontal Internet pour protéger l’accès à vos DMZ cela ne changera rien à un bon Checkpoint/ASA/OpenBSD (après tout, si l’on ouvre l’accès public à une application depuis internet, cela n’a pas de sens d’utiliser le User-id ou l’App-id. Quand au filtrage du contenu, ou effectivement vous mettez votre Palo Alto pour cela, ou vous continuez à utiliser votre IPS).

C’est vrai qu’en y réfléchissant, l’accès de vos utilisateurs à vos ressources internes demande à dépasser ce niveau de filtrage basique.

L’équipe de développeurs du projet A, que je reconnais par leurs User-Id, ne peut accèder qu’aux applications les concernants et pas aux applications d’un autre projet B, même s’ils sont dans le même vlan (oui oui, le fameux tcp/3306 autorisé pour l’ensemble des dev sur le vlan de bases de données ;) ).

Cibler l’accès à des applications suivant le profil des utilisateurs, c’est peut être cela qui nous manquait aujourd’hui.

Quand a filtrer l’accès des utilisateurs sur Internet, c’est une question de politique d’entreprise. Certains vont laisser ouvert (en passant par un proxy filtrant (type SquidGuard), d’autres vont refuser toute utilisation d’outils sociaux perturbant la rentabilité de l’entreprise (par exemple). Question de choix. Ce n’est pas à nous d’en décider, mais dans ce cas, Palo Alto répond clairement au besoin.

Si par contre je devais remonter un point noir, c’est l’interface d’administration du Palo Atlo. Que ce soit pour coder des règles de filtrages et surtout les appliquer (2minutes 30 à vide alors que sur mes Checkpoint avec plus de 1000 règles de filtrage et autant de NAT cela me prend moins de temps), c’est inutilisable au quotidien par une équipe habituée à pousser de nombreuses règles par jour. A régler donc.

En résumé, par la découverte de cette nouvelle génération de Firewall, il est évident qu’il nous faut repenser la façon de filtrer les différents éléments de nos infrastructures.

Si le danger vient beaucoup de l’extérieur, il existe aussi clairement à l’intérieur d’un SI, que le suivi des utilisateurs par autre chose que leurs adresses IPs, que l’accès précis aux applications doit être un devenir du rôle du firewall interne, c’est sûrement un axe de réflexion à avoir dès maintenant, car comme dirait Nir Zuk :

« Votre choix : innover ou disparaître. »

Bonne réflexion ;)

17 Commentairess :, , , plus...

La sécurité… des biens

par guiguiabloc le 08 août, 2010, sous geekerie, sécurité

Arf, le temps passe (emmène ma mémoire, le temps passe…)et je délaisse un peu mon blog.

Non que je sois inactif, bien au contraire. J’ai testé et essayé plein de trucs super sympa, divers et variés, mais qui ne pouvait faire un billet complet, d’autres bloggeurs le faisant aussi bien voir mieux que moi.

J’ai dernièrement passer un peu de temps sur Zookeeper et Voldemort (merci à Mathias et Bertrand pour leurs présentations sur ces sujets ;-) ), mais également sur le renforcement de ma domotique à domicile.

Pour être honnête, cela fait même quelques jours que je me bats avec PulseAudio mais bon, cela fera peut-être parti d’un autre billet (ou comment mon serveur Domotique me cause de sa douce voix métallique…).

En fait, je n’avais pas spécialement l’intention d’écrire un billet mais un événement assez récent m’a un peu choqué.

C’est en lisant cette brève que j’ai un peu halluciné. Non pas par le montant dérobé, je m’en moque que les gens disposent de 800 000 euros de bijoux a leur domicile, c’est surtout que vu les moyens de ces personnes, aucun système de sécurité n’existait dans leur villa…

Si vous me suivez, vous savez que je suis très attaché a tout ce qui est sécurité  informatique, mais je suis le suis également, par force de choses, aux environnements physiques. Il faut dire aussi que je suis bien entouré (coucou Armando ;-) ) côté famille par des gens dont les serrures, les portes et les systèmes de sécurité sont leur métier de tout les jours et m’ont transmis le virus.

Il y a plusieurs années, sur un autre blog, d’un autre temps :-p, j’avais fait part de ma passion toute honnête (il va sans dire) pour le lockpicking (traduire le crochetage des serrures). Vous retrouverez d’ailleurs cette ébauche d’article ICI.

J’y démontré d’ailleurs la faiblesse des serrures dites « normales » et leur facilité d’ouverture.

Pour preuve je remets un ligne une petite démonstration que j’avais faite où je crochetais un cylindre européen (serrure typique des maisons et appartements) en… 4 secondes.

La vidéo ICI

Bref, tout ceci pour vous faire part d’un billet pas trop geek (quoi que, on reste un peu dans le même état d’esprit) mais orienté protection physique ou comment je ne veux pas qu’on me vole mes serveurs :D

Je ne vous ferais pas un cours sur les sytèmes de sécurité a installer a votre domicile, mais juste quelques règles de bon sens à mettre en oeuvre.

Pour parfaire ce billet, je me baserais donc juste sur mon installation personnelle (pas tout hein, je laisse quand même quelques surprises aux éventuels visiteurs :-) )

  • PROTECTION

La première chose est bien entendu de protéger l’accès à votre domicile.

On peut pénétrer chez vous par 2 moyens :

- la porte

- les fenêtres

80% des effractions se font par la porte d’entrée, c’est donc un endroit critique à protéger.

Outre le crochetage de la serrure pour les cambrioleurs « puristes », les techniques de pénétration sont diverses et variées.

Si vous en doutiez, je vous invite à regarder cette vidéo (très commerciale je l’avoue mais très instructive également).

Notez que dans la majorité des cas, une porte qui résiste plus de 5 minutes suffit à dissuader une grande partie des cambrioleurs.

Donc première chose à faire, changer votre serrure par un modèle sécurisé.

Personnellement j’ai installé un bloc 3 points Fichet 787.

Bref le genre de serrure qui ne s’ouvre pas en 30 secondes…

Il existe des modèles encore plus sécurisés (si vous souhaitez la liste des certifications A2P, vous les trouverez en ligne sur le site du CNPP.

Evidemment le prix est à la mesure de votre désir de protection, n’escomptez pas une bonne serrure a 100 euros… A titre d’exemple le cylindre Fichet 787 seul se vend dans les 650 euros, mais vous pouvez en trouver d’occasion sur les sites bien connus pour cela.

Un bonne serrure c’est bien, mais protéger la porte également c’est mieux. Si la porte blindée est hors de prix, vous pouvez déjà renforcer celle existante par deux moyens simple :

- Une cornière anti pince (exemple ici) et une barre de seuil qui empêcheront l’introduction d’un pied de biche. Coût environ 50 euros.

- Des pions anti-dégondage : A installer côté paumelle (côté opposé a la serrure), il s’agit de protéger la porte contre une tentative de destruction des gonds

Cela ne coûte pas grand chose et comme moi, vous pouvez même le réaliser tout seul  avec des cylindres d’acier récupérable un peu partout.

Sachez que ses deux techniques sont valables également pour vos fenêtres ! Il faut moins de 5 minutes pour ouvrir une fenêtre PVC standard avec 2 tournevis.

Pour les fenêtres justement, deuxième point d’entrée de votre domicile, lors du choix du vitrage, optez pour un verre anti-effraction de type 44/16/4. Si cela n’empêchera pas les vitres d’être brisées, c’est surtout le temps pour ouvrir la fenêtre qui est important (j’en parle en connaissance de cause, ayant testé la solidité de ces vitrages avec une pioche, je peux vous assurer qu’on en ch…. pas mal :mrgreen: ).

Gardez a l’esprit que ce n’est pas « empêcher » l’intrus de pénétrer chez vous qui prédomine (tout s’ouvre, se casse, se force, c’est juste une question de temps), mais de le ralentir le plus possible (bref de l’em…er un maximum).

  • SURVEILLANCE – DISSUASION

- ALARME

Deuxième étape de la protection de votre domicile, l’alarme.

Toujours dans le but de gêner le cambrioleur, une sirène qui hurle dans ses oreilles et potentiellement dans le quartier, va légèrement l’agacer.

Personnellement j’ai opté pour un système d’alarme Diagral.

Fonctionnant sur pile (donc indépendant d’une coupure électrique et/ou filaire), ce système « discute » avec ses éléments via un double signal radio sécurisé.

Détecteurs d’ouvertures sur les portes d’accès, détecteurs de mouvements (penser a protéger également la centrale elle-même), et petit plus, détecteurs d’incendie.

La sirène de 110db vrille assez bien les oreilles (personnellement j’ai rajouté quelques sirènes indépendantes de 140db mais bon il parait que c’est illégal ;-) ).

A ceci se rajoute un transmetteur téléphonique/gsm qui vous appelera en cas de déclenchement de l’alarme.

Comptez 1500 euros pour un système complet.

Si vous êtes un tantinet parano, vous pouvez ajouter un deuxième circuit d’alarme discret appelé « alarme silencieuse ».

En domotique, Marmitek vend un système d’alarme X10 pas trop cher qui se prète très bien a cela. En neutralisant la sirène et en installant d’autres détecteurs de mouvement, vous pouvez être alerter silencieusement d’une intrusion.

- VIDEOSURVEILLANCE

La c’est le petit bonus du geek :-)

Je vous avais déjà parlé de ZoneMinder et je l’utilise donc pour la surveillance de mon domicile par 6 caméras extérieures et intérieures.

En utilisant les fonctions de détection de mouvement de ZoneMinder, vous pouvez être averti par mail ou sms lorsqu’une caméra capte un déplacement dans ses zones de surveillance.

Bien évidemment, caméras, serveur ZoneMinder, etc.. sont branchés sur onduleur les rendant autonomes lors d’une coupure électrique volontaire.

La domotique est très utile dans ce cas, permettant d’interagir avec l’environnement sur diverses actions (depuis la mise en mode Détection des caméras quand je quitte le domicile, ou le déclenchement manuel des sirènes à distance).

J’en profite pour vous signaler d’ailleurs l’excellent article de Jopa :

http://www.jopa.fr/index.php/2010/07/03/heyu-x10-domotique-maison/

Article sur lequel je me suis grandement inspiré pour gérer mes scénarios de présence, d’absence etc…

Petit billet a l’arrache juste pour réagir sur ce cambriolage dans cette villa. Renseignement pris, les voleurs de sont introduit par les fenêtres de l’étage et ont attaqué le coffre fort à la meuleuse d’angle…

Le genre de truc déjà bien discret et honnêtement, il faut un peu de temps pour cela. Les propriétaires dînaient tranquillement au restaurant…

Cela me sidère quand même un peu de ne pas s’équiper un minimum pour éviter cela, ou du moins être prévenu sur son portable d’une intrusion et de pouvoir se rendre ses les lieux en quelques minutes.

Même vous, geek en puissance, qui passer des heures a empêcher toute intrusion sur vos serveurs, qu’en est-il de l’accès physique à ceux ci ?…

Se faire pirater, c’est déjà une horreur, alors se faire cambrioler l’ensemble de ses équipements informatiques chez soi…

En espérant vous avoir donner quelques idées et vous sensibiliser à la protection de votre « datacenter » personnel ;)

Amusez vous  bien :-D

5 Commentairess :, , plus...

Surveillance par scénario comportemental avec Grandma

par guiguiabloc le 25 mar, 2010, sous linux, sécurité

Comme tout bon sysadmin, la supervision de vos serveurs et services est pour vous primordiale.

Je ne ferais pas le tour des différentes solutions existantes, la plus réputée étant Nagios.

Nous allons nous focaliser sur la surveillance d’un service bien connu : un site web.

Dans la majorité des cas, les différents éléments que vous scrutez sont les charges du serveur, les différents process Apache, etc,  et bien sur, que le site Web retourne un beau code 200, tout va bien.

Mais si la page d’accueil est « défacée » , ou si un formulaire ne retourne pas la valeur escomptée, ce genre de problème reste transparent.

En lecteur assidu de ce blog, vous avez peut-être mis en place SEC ( http://blog.guiguiabloc.fr/index.php/2009/03/18/interception-des-erreurs-applicatives-dans-nagios-avec-sec-et-prelude-lml ) mais l’idéal serait  de pouvoir simuler les actions d’un utilisateur sur le site web par un scénario défini et de remonter une erreur dans Nagios en cas de comportement anormal.

Ce serait bien hein ?

Alors bien sûr, ce genre de produit existe dans le monde propriétaire (Newtest par exemple) mais en OpenSource, c’était plutôt rare.

Heureusement, mon pote Antoine, le Geek au « garage magique », nous offre une solution efficace : Grandma

Pour reprendre la présentation de l’application :

  • Grandma est une sonde robotisée, elle exécute à intervalles réguliers des scénarii permettant de simuler l’action d’un utilisateur sur une application. Chaque étape du scénario fait l’objet d’une vérification pour valider que la réponse de l’application est satisfaisante.
  • Grandma permet de simuler ces actions sur toute application web, 3270, OpenVMS et Unix (tout ce qui n’est pas client lourd en fait). Elle utilise pour cela les outils GNU : cUrl, c3270, Expect et est écrite en Bash.
  • Grandma prend en charge un calendrier et des profils de scénarii afin de gérer les plages de maintenance et adapter les contrôles aux plages d’activité des applications.
  • Grandma fait office de collecteur/ordonnanceur. Une fois les résultats (scénario terminé avec succès, temps d’exécution) récupérés, l’information est remontée vers Nagios à l’aide du client Nsca.

La classe non ?

Suffit les palabres, on se dérouille les doigts, on ferme tout ce qui pourrait nous déconcentrer (oui, oui, ça aussi…), et on se lance (« pas trop fort », oui je sais, elle est pourrie cette blague… (mais elle est quand même moins lourde que « lot du lac« …))

Je considère déjà que vous avez un Nagios actif et que vous savez configurer des remontées d’alertes par NSCA (sinon, un tour ICI )

Téléchargez les sources de Grandma et décompressez le tout dans /opt

Vous trouverez l’arborescence suivante:

/opt/grandma/arch : répertoire de stockage des archives des scénarios en erreur

/opt/grandma/cfg : répertoire de configuration

/opt/grandma/cfg/grandma.cfg : configuration générale de l’application

/opt/grandma/cfg/Grandma.cfg : configuration spécifique à chaque sonde

/opt/grandma/cfg/send_nsca*.cfg : configuration des envois d’informations vers Nagios

/opt/grandma/checks_available : répertoire de stockage des scénarios

/opt/grandma/checks_enabled : répertoire des scripts activés sur la sonde (lien symbolique vers available)

/opt/grandma/lib : répertoire des scripts communs de l’application

/opt/grandma/web : répertoire des fichiers web (interface d’administration de grandma)

Un « petit » tuto d’installation est disponible ici : http://code.google.com/p/grandma/wiki/HowtoInstallationGrandma

La première chose à faire est de créer un utilisateur spécifique  « grandma » puis de donner les droits sur /opt/grandma.

Ensuite, partie paramétrage :

serveur:# echo "export GRANDMAHOME=/opt/grandma" >> /etc/profile
 
serveur:/opt/grandma/lib# ln -s /opt/grandma/lib/grandma /etc/init.d/grandma
  • Vérifier les différents chemins dans le fichier /opt/grandma/cfg/Grandma.cfg

(par exemple /bin/basename qui sous Debian est /usr/bin/basename).

  • Définition du serveur Nagios : nscaserver= »nagios.guiguiabloc.fr »

Préparons notre premier scénario qui devra vérifier que le texte « Bienvenue sur GuiguiAbloc! » s’affiche sur la page d’accueil du blog.

Un scénario exemple et présent dans /opt/grandma/checks_available.

serveur:/opt/grandma/checks_available$ cat check_site_guiguiabloc
 
#!/bin/bash
#Copyright 2002,2010 - Antoine Theuret
# Affectation des variables et fonction communes
. /etc/profile
. $GRANDMAHOME/cfg/grandma.cfg
 
# Creation des repertoires temporaires et des timestamps
$GRANDMAHOME/lib/creation_rep_travail.sh ; if [ $? -ne 0 ]; then UNKNOWN "KO : Probleme lors de la creation des repertoires temporaires"; fi
 
# Bridage des scenarios en cas de surcharge de la sonde
$GRANDMAHOME/lib/controle_surcharge.sh ; if [ $? -ne 0 ]; then UNKNOWN "KO : La sonde $nomsonde est surchargee, l'execution des scenarios est bridee" ; fi
 
# Controle des plages horaires et jours d'execution
$GRANDMAHOME/lib/verif_heure_exception.sh FTN $1 ; if [ $? -eq 1 ]; then OKOUT "OK : pas de contrôle a faire sur cette periode"; fi
 
# Recuperation des mots de passe
source $GRANDMAHOME/lib/gestion_motdepasse.sh 123456 ; if [ $? -eq 3 ]; then UNKNOWN "KO : Probleme lors de la recuperation des mots de passe"; fi
 
# Test de la page d'accueil
$curl $curl_opts "http://blog.guiguiabloc.fr/" >; $tmpdir/page.html 2>&1
TESTRET ; COUNT "Bienvenue sur GuiguiAbloc!"
if [ "$count" -ne 1 ];then FATAL "KO : Pas de page d'accueil"; fi
 
OK "OK : Scenario Blog Guiguiabloc nominal"
 
serveur:/opt/grandma/checks_enabled$ ln -s ../checks_available/check_site_guiguiabloc check_site_guiguiabloc

Premier test :

serveur:/opt/grandma/checks_enabled$ ./check_site_guiguiabloc
OK : Scenario Blog Guiguiabloc nominal - Scenario execute en 1.236361391 s | ok=1.236361391

Changeons le texte sur la page et retestons :

serveur:/opt/grandma/checks_available$ ./check_site_guiguiabloc
KO : Pas de page d'accueil - Scenario execute en 1.076389951 s - <A href=http://dummy:8080/arch/check_site_guiguiabloc/20100323-155230 target=_blank>ERREUR> | ko=1.076389951

Deuxième test, on vérifie le moteur de recherche ainsi que le résultat obtenu :

# test du moteur de recherche
$curl $curl_opts "http://blog.guiguiabloc.fr/?s=tux+droid" > $tmpdir/page.html 2>&1
TESTRET ; COUNT "GuiguiAbloc search results: tux droid"
if [ "$count" -ne 1 ];then FATAL "KO : Impossible d'effectuer une recherche" ; fi
 
$curl $curl_opts "http://blog.guiguiabloc.fr/?s=tux+droid" > $tmpdir/page.html 2>&1
TESTRET ; COUNT "Les Geeks sont de grands enfants"
if [ "$count" -ne 3 ];then FATAL "KO : Retour résulat recherche incorrect" ; fi
 
serveur:/opt/grandma/checks_available$ ./check_site_guiguiabloc
OK : Scenario Blog Guiguiabloc nominal - Scenario execute en 2.043520474 s | ok=2.043520474

Les possibilités sont presque infinies, la phase la plus longue étant d’écrire les scénarios pour les rendre compatibles avec Curl.

Une fois tout en place, il ne vous reste qu’a lancer le démon Grandma sous root :

serveur:~# /opt/grandma/lib/grandma start
Lancement de grandma : [OK]

Dans Nagios, les traps Nsca  :

Mar 25 14:10:50 nagios: EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;Grandma;check_site_guiguiabloc;2;KO : Pas de page d'accueil - Scenario execute en 0.625854926 s - <A href=http://dummy:8080/arch/check_site_guiguiabloc/20100325-141051 target=_blank>ERREUR< | ko=0.625854926

Et cela vous donne un « zoli » service Nagios supplémentaire :

Il existe également une interface Web, facile à mettre en place, qui vous permettra d’un coup d’oeil d’avoir accès aux résultats des divers scénarios.

Bilan, un excellent outil composé de simples scripts shell qui semble basique,  mais redoutablement efficace pour aller plus loin dans la supervision de vos sites internet.

Amusez vous bien :-)

2 Commentairess :, plus...

Hadoop, doop, doop, doop…

par guiguiabloc le 12 nov, 2009, sous architecture, linux, sécurité

Un billet qui propose même une version musicale : http://www.youtube.com/watch?v=LUm19zKdASY

Bon ok , je sors… :mrgreen:

Vous me direz, j’aurais pu faire pire et vous proposer une nouvelle version de « Oh chéri, chéri » de Karen Cheryl :-D (désolé Fred… ;-) )

Pour être franc avec vous, j’ai longuement hésité avant de me lancer dans l’écriture de ce billet.

Le sujet est tellement vaste et les possibilités d’utilisation si nombreuses qu’il m’aurait fallu des pages et des pages pour en faire le tour (en plus je suis certain d’avoir un retour amusé de certaines personnes de mon entourage sur ce billet :-D )

Mais après tout, pourquoi pas ? Donc je vais l’aborder sans plonger dans les détails mais suffisamment, je pense, pour pouvoir vous amuser (c’est bien le but, non ? :-D )

Hadoop, quoi que c’est ?

Pour citer Wikipédia :

« Hadoop est un framework java libre destiné aux applications distribués et à la gestion intensive des données. Il permet aux applications de travailler avec des milliers de nœuds et des pétaoctets de données. Hadoop a été inspiré par les publications MapReduce, GoogleFS et BigTable de Google. »

Parmi les éléments composant Hadoop, nous allons retrouver principalement:

- HDFS (Hadoop Distributed File System), le système de fichiers distribués

- MAPREDUCE , un framework pour les calculs parallèles et distribués

- HBASE , la base de données distribuées

- ZOOKEEPER , un service de centralisation pour coordonner les systèmes distribués

- PIG , plateforme pour l’analyse d’un grand nombre de données

Vous l’avez compris, Hadoop sert principalement au traitement de gros volumes de données.

A cet effet, je vous invite à regarder la vidéo d’Olivier Grisel lors de sa présentation d’Hadoop et MapReduce a l’Open Source Developers Conference 2009 (vous retrouverez cette présentation ICI ).

Vous me direz « Oui mais bon, en quoi ça me concerne moi ??? ».

Tsss, petit scarabée, il n’y a pas si longtemps, dans une galaxie lointaine, vous stockiez l’intégralité de vos photos de vacances de votre vie sur un disque de 10 Go….

Aujourd’hui où le moindre APN bas de gamme prend une photo de 5 Mo, je vous laisse imaginer la volumétrie nécessaire pour stocker l’intégralité de vos clichés de vacances avec Tata Simone et surtout la cousine Juliette…

Bref, vous l’avez compris, la capacité des disques augmentent mais les vitesses de transfert, elles ne suivent pas.

En 1990, sur un disque de 1,4Go, avec un taux de transfert de 4,4 Mo/s, il vous fallait environ 5 minutes pour le lire entièrement. De nos jours, pour un disque d’1To, avec un taux de transfert de 100 Mo/sec, il vous faut presque 2h30 pour la même opération…

Diviser ces données sur 100 disques et, par cette lecture parallèle, toutes les données peuvent être lues en moins de 2 minutes.

Ceux qui utilisent le système RAID doivent comprendre ;-)

Pour de plus amples détails, je vous invite a parcourir le Wiki Hadoop ou vous plonger dans l’excellent « Hadoop, The definitive Guide » chez O’Reilly .

Pour bien comprendre le fonctionnement d’Hadoop, comme toujours, un joli dessin pour tenter de conceptualiser le bouzin.

Il faut discerner tout d’abord la partie HDFS qui est le système de fichier distribué d’Hadoop, composé d’un serveur maître, le NameNode et de serveurs détenant les données proprement dites, les Datanodes.

Quand une application cliente a besoin d’accéder a une information, elle interroge le NameNode qui lui indique les Datanodes sur lesquels se trouve ces informations. Une fois en possession de cette liste, l’application cliente va directement interroger le(s) Datanodes.

Dans une architecture HDFS, un fichier est découpé en un ou plusieurs blocs et réparti sur les datanodes du cluster. De plus, chaque bloc est répliqué suivant le facteur de réplication que vous avez spécifié dans votre configuration.

Je ne vais pas vous expliquer en détails la façon dont est architecturé HDFS, je vous invite à lire cette page pour bien comprendre la structure :

http://hadoop.apache.org/common/docs/current/hdfs_design.html

Ensuite, par dessus HDFS, nous avons la partie moteur MAP/REDUCE avec un JobTracker, genre de centralisateur de tâches, et des TaskTracker qui se chargent d’executer les travaux demandés.

Le Client soumet la requète de travail au JobTracker qui va les transmettre au(x) TaskTracker concerné(s) en s’efforcant d’être au plus proche de la donnée.

Concernant MapReduce, son rôle consiste à diviser le traitement en 2 étapes :

  • la première phase (Map) est une étape d’ingestion et de transformation des données sous la forme de paires clé/valeur
  • la seconde phase (Reduce) est une étape de fusion des enregistrements par clé pour former le résultat final

Source : InternetCollaboratif
, sinon je vous invite à vous rendre sur cette page de Wikipédia qui vous donnera un peu plus d’explication sur son fonctionnement (inutile que je vous raconte la même chose :-) )

Sachez enfin qu’Hadoop est utilisé chez Yahoo!, Facebook, le New York Times, Last.fm etc… Bref, déjà bien éprouvé en production…

Bien, trêve de bavardage, attaquons nous a tout cela.

La société Cloudera propose sur son site une installation automatisée d’Hadoop, permettant de monter son cluster Hadoop en trois clics et configurable à souhait.

Excellente initiative qui mérite d’être saluée.

Mais bon, nous, on n’a pas peur, on est même plutôt « couillu » donc on va se la faire en mode installation a la mimine.

Pré-requis :

- Un JAVA 1.6 sur les serveurs : http://java.sun.com/javase/downloads/index.jsp

- Un utilisateur « hadoop » par exemple

- une paire de clés ssh privé/publique pour cet utilisateur afin de contrôler les noeuds du cluster

Téléchargez les sources sur : http://hadoop.apache.org/core/releases.html

tar xzvf hadoop-0.20.1.tar.gz
 
chown -R hadoop:hadoop hadoop-0.20.1
su - hadoop
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
ssh localhost (et sur les autres noeuds également)

Il existe 3 modes d’installation d’Hadoop :

  1. Mode StandAlone (local)
  2. Mode Pseudo-Distributed(chaque démon Hadoop est lancé dans un process Java indépendant)
  3. Mode Fully-Distributed (Cluster)

Bien évidemment, nous, même pas peur, on va se faire l’installation « Cluster ».

Pour ce billet, je vais partir sur un cluster de 4 machines comme décris dans le schéma plus haut.

Pour faciliter les tests, le NameNode sera également DataNode.

Un petit dessin reprenant le nom des machines et leurs rôles pour la suite :

Les fichiers de configurations se trouve dans.. conf.

Voici les principaux :

hadoop-env.sh         Variables d’environment utilisées par Hadoop
core-site.xml            Configuration principal (comme les paramètres I/O pour HDFS et MapReduce
hdfs-site.xml            Configuration des démons HDFS
mapred-site.xml      Configuration pour le démon MapReduce (jobtracker et les tasktrackers)
masters                   Liste des machines qui sont NameNode secondaire
slaves                      Liste des machines qui sont datanodes et tasktracker
Vous n’avez pas à spécifier le NameNode et le JobTracker dans le fichier « masters ».

Pour la partie HDFS, c’est en lançant le script start-dfs.sh sur la machine qu’elle va être désignée NameNode et executer le démarrage des datanodes listées dans le fichier « slaves ».

Idem pour la partie MapReduce et le script stop-mapred.sh.

Le premier a modifier est celui de l’environnement, puis le core-site.xml et le hdfs-site.xml pour la partie HDFS, enfin le maprep.xml pour la partie Mapreduce.

hadoop-env.sh

export JAVA_HOME=/opt/jdk1.6.0_16
 
# Taille mémoire allouée à chaque démon (ici 2Go)
 
export HADOOP_HEAPSIZE=2000
 
export HADOOP_LOG_DIR=/tmp

Il existe d’autres options que vous pouvez affiner.

core-site.xml

On définit l’URI du NameNode

 <property>
<name>fs.default.name</name>
<value>hdfs://guiguiabloc-namenode/</value>
</property>

hdfs-site.xml (HDFS)

<!--  ici le chemin local du filesystem où le NameNode stocke ses données -->
dfs.name.dir
/data/hdfs
 
<!--  ici le chemin local du filesystem où le DataNode stocke ses données -->
dfs.data.dir
/data/hdfs2

mapred-site.xml (MAPREDUCE)

Ici on spécifie le répertoire local qui servira a MapReduce pour écrire ses données temporaires.

Puis le répertoire système proprement dit (dans le filesystem HDFS)

mapred.job.tracker
guiguiabloc-jobtracker:8021
 
mapred.local.dir
/opt/mapred
 
mapred.system.dir
/hdfs/mapred/system
 
mapred.tasktracker.map.tasks.maximum
4

slaves

Ici nous spécifions tout les noeuds datanodes/tasktrackers

guiguiabloc-namenode
guiguiabloc-datanode-a
guiguiabloc-datanode-b

Commencons les joyeusetés :

On « formate » notre HDFS (sur guiguiabloc-namenode)

guiguiabloc-namenode:~$ bin/hadoop namenode -format
09/11/12 14:38:31 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = guiguiabloc-namenode/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.20.1
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.20.1-rc1 -r 810220; compiled by 'oom' on Tue Sep  1 20:55:56 UTC 2009
************************************************************/
Re-format filesystem in /data/hdfs ? (Y or N) Y
09/11/12 14:38:33 INFO namenode.FSNamesystem: fsOwner=hadoop,hadoop
09/11/12 14:38:33 INFO namenode.FSNamesystem: supergroup=supergroup
09/11/12 14:38:33 INFO namenode.FSNamesystem: isPermissionEnabled=true
09/11/12 14:38:33 INFO common.Storage: Image file of size 96 saved in 0 seconds.
09/11/12 14:38:34 INFO common.Storage: Storage directory /data/hdfs has been successfully formatted.
09/11/12 14:38:34 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at guiguiabloc-namenode/127.0.1.1
************************************************************/

Puis on démarre le Namenode (qui se chargera de démarrer les datanodes)

$ bin/start-dfs.sh
starting namenode, logging to /tmp/hadoop-hadoop-namenode-guiguiabloc-namenode.out
guiguiabloc-namenode: starting datanode, logging to /tmp/hadoop-hadoop-datanode-guiguiabloc-namenode.out
guiguiabloc-datanode-b: starting datanode, logging to /tmp/hadoop-hadoop-datanode-guiguiabloc-datanode-b.out
guiguiabloc-datanode-a: starting datanode, logging to /tmp/hadoop-hadoop-datanode-guiguiabloc-datanode-a.out
localhost: starting secondarynamenode, logging to /tmp/hadoop-hadoop-secondarynamenode-guiguiabloc-namenode.out

Si tout se déroule correctement, vous devriez voir les noeuds esclaves démarrés :

2009-11-12 16:14:38,974 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = guiguiabloc-datanode-a/91.xx.xx.xx
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 0.20.1
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.20.1-rc1 -r 810220; compiled by 'oom' on Tue Sep  1 20:55:56 UTC 2009
************************************************************/
2009-11-12 16:14:39,297 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /data/hdfs is not formatted.
2009-11-12 16:14:39,297 INFO org.apache.hadoop.hdfs.server.common.Storage: Formatting ...
2009-11-12 16:14:40,062 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Registered FSDatasetStatusMBean
2009-11-12 16:14:40,065 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened info server at 50010
2009-11-12 16:14:40,068 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Balancing bandwith is 1048576 bytes/s
...

Il ne vous reste qu’a vous connecter sur l’interface http://guiguiabloc-namenode:50070 pour voir l’état de votrte cluster

Maintenant démarrons la partie MapReduce.

hadoop@guiguiabloc-jobtracker:~$ bin/start-mapred.sh
starting jobtracker, logging to /tmp/hadoop-hadoop-jobtracker-guiguiabloc-jobtracker.out
guiguiabloc-namenode: starting tasktracker, logging to /tmp/hadoop-hadoop-tasktracker-guiguiabloc-namenode.out
guiguiabloc-datanode-a: starting tasktracker, logging to /tmp/hadoop-hadoop-tasktracker-guiguiabloc-datanode-a.out
guiguiabloc-datanode-b: starting tasktracker, logging to /tmp/hadoop-hadoop-tasktracker-guiguiabloc-datanode-b.out

Idem les noeuds tasktracker démarrent également :

2009-11-12 16:58:09,822 INFO org.apache.hadoop.mapred.TaskTracker: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting TaskTracker
STARTUP_MSG:   host = guiguiabloc-datanode-b/91.xx.xx.xx
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 0.20.1
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.20.1-rc1 -r 810220; compiled by 'oom' on Tue Sep  1 20:55:56 UTC 2009
************************************************************/
...
2009-11-12 16:58:47,185 INFO org.apache.hadoop.ipc.Server: IPC Server handler 6 on 43676: starting
2009-11-12 16:58:47,185 INFO org.apache.hadoop.mapred.TaskTracker: TaskTracker up at: localhost/127.0.0.1:43676
2009-11-12 16:58:47,186 INFO org.apache.hadoop.mapred.TaskTracker: Starting tracker tracker_guiguiabloc-datanode-b:localhost/127.0.0.1:43676
2009-11-12 16:58:47,230 INFO org.apache.hadoop.ipc.Server: IPC Server handler 7 on 43676: starting
2009-11-12 16:58:47,238 INFO org.apache.hadoop.mapred.TaskTracker:  Using MemoryCalculatorPlugin : org.apache.hadoop.util.LinuxMemoryCalculatorPlugin@1af33d6
2009-11-12 16:58:47,241 WARN org.apache.hadoop.mapred.TaskTracker: TaskTracker's totalMemoryAllottedForTasks is -1. TaskMemoryManager is disabled.
2009-11-12 16:58:47,242 INFO org.apache.hadoop.mapred.IndexCache: IndexCache created with max memory = 10485760
2009-11-12 16:58:47,243 INFO org.apache.hadoop.mapred.TaskTracker: Starting thread: Map-events fetcher for all reduce tasks on tracker_guiguiabloc-datanode-b:localhost/127.0.0.1:43676

Vous pouvez vérifier l’état de l’ensemble en vous connectant sur http://guiguiabloc-jobtracker:50030

Une fois tout bien démarrer, il ne vous reste qu’a créer les accès pour les utilisateurs :

$ bin/hadoop fs -mkdir /user/username
$ bin/hadoop fs -chown username:username /user/username

Pour appliquer un quota d’ 1To a un user par exemple :

$ bin/hadoop dfsadmin -setSpaceQuota 1t /user/username

Des outils de Benchmark sont fournis avec, vous permettant de tester votre cluster :

Par exemple pour tester l’écriture de 10 fichiers de 1G

$ bin/hadoop jar /opt/hadoop/hadoop-0.20.1-test.jar TestDFSIO -write -nrFiles 10 -filesize 1000

Idem pour les Mapreduces

$ bin/hadoop jar /opt/hadoop/hadoop-0.20.1-examples.jar randomwriter random-data
$ bin/hadoop jar /opt/hadoop/hadoop-0.20.1-examples.jar sort random-data sorted-data
Running on 3 nodes to sort from hdfs://guiguiabloc-namenode/user/hadoop/random-data into hdfs://guiguiabloc-namenode/user/hadoop/sorted-data with 5 reduces.
Job started: Thu Nov 12 16:47:41 CET 2009

Dans votre interface d’administration, les Jobs s’afficheront avec le résultat.

Vous voilà désormais à la tête d’un joli cluster Hadoop qu’il est grand temps de mettre à contribution.

Je vous invite a lire les nombreux tuto qui existent sur le site d’Hadoop (http://hadoop.apache.org/common/docs/current/mapred_tutorial.html par exemple).

Voila pour cette première approche d’Hadoop, en espérant que cela à titiller votre envie d’en savoir plus sur cette architecture.

Bien évidemment, je n’ai fait qu’approcher le sujet, j’y reviendrais peut-être dans d’autres billets maitenant que notre architecture Hadoop est en place afin de vous montrer la formidable puissance de cet environnement.

Amusez-vous bien :-)

7 Commentairess :, , plus...

Vous cherchez quelque chose ?

Utilisez le formulaire ci-dessous:

Vous ne trouvez pas ce que vous voulez ? Laisser un Commentaire sur un Billet !