14
Dans un précédent post, nous avions vu les grands concepts d’Hadoop (cf. http://www.opensides.fr/2011/03/10/hadoop-en-moins-de-5-minutes). Aujourd’hui nous allons consacrer 5 nouvelles minutes avec Hadoop pour passer à la pratique.
Apache distribue une version packagée de l’écosystème complet Hadoop. Cette version s’appelle Cloudera: Cloudera’s Distribution for Apache Hadoop (CDH).
Elle est basée sur les dernières versions stables de Hadoop, contient également des patchs additionels. La bonne nouvelle est que Cloudera fournie même une VM, il n’y a donc rien à installer…
Voici son contenu:
Télécharger de la VM ici: http://cloudera-vm.s3.amazonaws.com/cloudera-training-0.3.3.tar.bz2?downloads
Detarrer le tout et lancer la VM avec le player VMWare (accessible ici si vous ne l’avez pas encore: http://downloads.vmware.com/d/info/desktop_downloads/vmware_player/3_0)
Attention: VMWare Fusion est payant sous Mac.
On démarre la VM et hop c’est magique nous avons un Ubuntu avec tout l’écosystème Hadoop prêt à l’emploi.
Lorsque l’on démarre la VM, on peut voir le kit de base pour commencer avec Hadoop:
Navigateur
Commençons par ouvrir le navigateur. On peut voir l’interface d’administration web de Hadoop. Cette interface va nous permettre:
- de surveiller les jobs (en cours, terminés, échoué, ..)
- de naviguer dans le système de fichier HDFS
Eclipse
En ouvrant Eclipse, on peut voir qu’un workspace est déja chargé avec un ensemble de projets exemples.
Instructions
Enfin nous pouvons ouvrir le répertoire qui se trouve sur le bureau. On voit que ce répertoire contient un ensemble de tutoriaux et d’exercices pour appréhender le framework.
Il est temps de manipuler un peu le système de fichier HDFS. Pour cela, ouvrons un terminal. Commençons par taper hadoop pour voir l’ensemble des commandes disponibles.
Nous allons utiliser la commande fs qui permet de manipuler le file système: hadoop fs -<commande>
Nous allons pousser un fichier dans le HDFS avec la commande: hadood fs -put README /README
Vérifions maintenant que le fichier est bien présent avec la commande: hadoop fs -ls /
Lisons le contenu du fichier : hadoop fs -tail /README
-> les commandes fs reprennent la syntaxe des commandes shell et pour avoir un détail sur ces commandes, je vous invite à lire la très bonne page man ou d’aller sur la page http://hadoop.apache.org/common/docs/r0.19.2/hdfs_shell.html
Passons maintenant au Map Reduce. Pour ça direction Eclipse pour voir si nous trouvons un exemple de MapReduce à tester. Nous pouvons voir que Cloudera nous fourni un ensemble très complet d’exemples. Nous allons donc pouvoir exporter un jar pour le tester directement dans un terminal sur le fichier que nous avons poussé.
Petite note sous Eclipse. Il existe un bug lié à la librairie d’affichage d’Eclipse que les utilisateurs Ubuntu connaissent bien. La parade ? Il suffit de se créer un petit script de lancement:
export GDK_NATIVE_WINDOWS=true
./eclipse
Parmi les exemples exportons le fameux exemple WordCount sous forme de jar executable et lançons le en lui donnant en paramètre un fichier en entrée et une destination en sortie:
Avec la commande hadoop fs -put toto.txt /input/toto, poussons un fichier exemple toto.txt contenant:
a b a
a b b
b c c c
Lançons ensuite notre job:
java -jar sample.jar /user/training/input/toto /output
Et nous obtenons le résultat suivant:
a 3
b 3
c 3
Dans ce post nous sommes passé un peu à la pratique. Nous avons pu faire ça très rapidement grâce à la distribution Cloudera qui permet de démarrer très vite. Pour aller plus loin, je vous conseille de lire les tutoriaux proposés et de regarder les exemples proposés. Dans un prochain post, nous verrons en détail implémentation d’un Map Reduce.