Vous êtes sur la page 1sur 5

TP1 - Initiation a Hadoop et MapReduce

Ce TP, vous permet de faire vos premiers pas avec Hadoop. Pour ceci il faut preparer l'environnement
logiciel necessaire. Le plus simple c'est de telecharger et de se connecter a une machine virtuelle dans
laquelle Hadoop, ainsi qu'un grand nombre d'outils de son ecosysteme, sont preinstalles. Pour ceci, il
est recommande de telecharger la machine virtuelle « Hadoop Training Virtual Machine » tournant
sous Ubuntu. Pour utiliser cette machine, il est recommande d'installer « Virtual Box » qui est un
logiciel de virtualisation disponible en tant qu'hote sur plusieurs systemes d'exploitation, notamment
Windows, Linux 32 et 64 bits et Mac OS. Une fois Virtual Box installe, ouvrez-le et im jportez le
fichier HadoopTraining. ova et suivez les instructions qui apparaissent. A la fin de cette etape,
vous pourrez demarrer la machine virtuelle et travailler. Vous aurez notamment besoin d'ouvrir un
terminal pour ecrire les differentes commandes vous permettant d'executer le travail demande. Avant
d'ecrire toute commande hadoop, il faut d'abord lancer les differents services en tapant :
startCDH.sh.
En cas de problème lors du lancement du safemode, lancer l’instruction
hdfs dfsadmin -safemode leave

Pour stopper ces services, il faut taper la commande stopCDH. sh.


En effet, toutes les commandes interagissant avec le systeme Hadoop commencent par hadoop fs ou
hdfs dfs. Ensuite, les options rajoutees sont tres largement inspirees des commandes Unix standard.
Le tableau suivant resume les commandes les plus utilisees dans Hadoop.
Commande Resultat

hadoop fs –ls Lister le contenu d'un dossier

hadoop fs -mkdir <nomdossier> Creer un dossier dans HDFS

hadoop fs -put < Path[Filename]> <nomrep> Charger un fichier du local (repertoire


ex:hadoop fs –put /home/hadoop/Desktop/file.txt
Linux) a HDFS
hadoop fs -get < Path[Filename]> <nomrep> Exporter un ou plusieurs fichiers de
ex: hadoop fs –get file.txt /home/hadoop/Desktop/
HDFS au local
hadoop fs -cat <Path[Filename]> Afficher le contenu d'un fichier

hadoop fs -tail <Path[Filename]> Afficher les dernieres lignes d'un


fichier
hadoop fs -rm <Path[Filename]> Supprimer un fichier dans HDFS

Hadoop fs -touchz <Path[Filename]> Creer un fichier vide dans HDFS

1
Hadoop fs -mv < Path[Filename]> <rep> Deplacer le fichier sous le repertoire
rep

Partie I : Manipulation de commandes HDFS


Dans cette partie nous nous interessons a la manipulation des commandes de base HDFS. Dans ce
contexte, il faut bien faire la distinction entre votre compte Linux ordinaire et le compte que vous avez
sur HDFS. Les commandes hdfs dfs -cmde . . . s'adressent a ce dernier. Les commandes
Unix habituelles s'adressent au premier.
Essayer les manipulations suivantes :
1. Afficher ce qu'il y a a la racine HDFS en tapant : hdfs dfs -ls /. Vous pouvez descendre
inspecter les dossiers que vous voyez. Il n'y a pas de commande equivalente a cd, parce qu'il n'y a
pas de notion de dossier courant dans HDFS, donc a chaque fois, il faut remettre le chemin
complet.
2. Afficher les fichiers des sous-dossiers avec leurs tailles en tapant : hdfs dfs -ls -R -h
/tmp
3. Creer un repertoire fichiers dans votre espace HDFS.
4. Creer un fichier appele bonjour.txt dans votre compte Linux.
5. Ecrire le mot «bonjour» dans bonjour.txt a l'aide de nano ou vi.
6. Copier ce fichier sur HDFS et verifier le resultat en tapant la commande hdfs dfs -ls.
7. Afficher le contenu du fichier bonjour.txt.
8. Supprimer ce fichier de HDFS et verifier le resultat.
9. Remettre a nouveau ce fichier par hdfs dfs -copyFromLocal bonjour.txt. Cette
commande est similaire a hdfs dfs -put.
10. Deplacer bonjour.txt sous le repertoire Fichiers en tapant hdfs dfs -mv bonjour.txt
fichiers. Verifier que le deplacement a bien ete fait.
11. Copier le fichier bonjour.txt dans un nouveau fichier salut.txt dans le meme repertoire.
Verifier que la copie a bien ete faite.
12. Afficher le nombre de sous-dossiers, fichiers et octets occupes en tapant : hdfs dfs –count/
13. On se propose maintenant de telecharger un fichier dont l'URL est la suivante : http: // www.
textfiles .com/ etext/FICTION/dracula. txt
a. Téléchargez le fichier dracula.txt dans votre compte.
b. Copiez ce fichier vers HDFS et verifiez sa presence.
c. Supprimez le fichier de votre compte local ainsi que de HDFS
14. Voici une autre maniere de faire sans stocker le fichier dans votre compte : wget -O -
http://www.textfiles.com/etext/FICTION/dracula.txt | hdfs dfs -put
- drac.txt
15. Vérifier le fichier a été enregistré dans hdfs : hdfs dfs –ls
16. Lister les blocs du fichier drac.txt en tapant hdfs fsck /user/hadoop/drac.txt
-files -blocks.

Partie II : Word counter


On se propose dans ce qui suit, de tester la solution MapReduce du problème de calcul du nombre
d'occurrences de mots dans un texte donne connue sous le nom de word counter. Pour ceci, il est
demande de :

2
1. Créer un fichier mapper.py et y écrire le code du mapper.
2. Executer mapper : chmod +x mapper.py
3. Tester le code propose en local sur les 15 premieres lignes du fichier drac.txt en tapant
l'instruction suivante : tail drac.txt | mapper.py
4. Creer le fichier reduce.py et y ecrire le code du reducer.
5. Executer reducer: chmod +x reducer.py
6. Tester le code propose en local sur les 15 premieres lignes du fichier drac.txt en tapant
l'instruction suivante : tail drac.txt | mapper.py | sort | reducer.py

Partie III : Job MapReduce


Pour lancer un job entier sur Hadoop, il faut faire appel au mapper puis au reducer sur un fichier donne
en entrée, et obtenir à la fin un resultat, directement sur HDFS. Pour faire cela, l'instruction à exécuter
est :

hadoop jar Training/CDH4/hadoop-2.0.0-cdh4.0.0/share/hadoop/tools


/lib/hadoop-streaming-2.0.0-cdh4.0.0.jar -mapper mapper.py -reducer
reducer.py -file mapper.py -file reducer.py -input myinput -output
joboutput

hadoop jar Training/CDH4/hadoop-2.0.0-cdh4.0.0/share/hadoop/tools/lib/hadoop-streaming-2.0.0-


cdh4.0.0.jar -mapper mapvente.py -reducer redvente.py -file mapvente.py -file redvente.py -input
purchase.txt -output joboutput

il faut changer le numéro de job. S’il existe le job ça ne se lance paq

Cette instruction donne en parametres les fichiers correspondant aux Mappers et Reducers, aussi bien
que les repertoires contenant le fichier d'entree (myinput) et la sortie a generer (joboutput). Le
repertoire de sortie, apres execution, contiendra un fichier appele part-00000, representant la sortie
desiree.

Remarque :
Le repertoire d'entree doit contenir un seul fichier. Le repertoire de sortie ne doit pas exister avant
l'execution de l'instruction.

Pour faciliter le travail, creer un raccourci pour cette instruction (dans le fichier ~/.bashrc). Executer
desormais l'instruction suivante :
hs mapper.py reducer.py myinput joboutput

Exercices to do
Partie IV : Total de ventes
Comme son nom l'indique, le fichier purchases.txt comporte un ensemble de lignes decrivant les
ventes d'un ensemble de magasins. Chaque ligne est composee de 5 champs separes par des tabulations
sous la forme suivante :

3
date time store item cost

On se propose dans ce qui suit, de calculer le total des ventes par magasin.

1. Determiner le couple (cle, valeur) a extraire dans ce cas.


2. Creez un fichier map.py et y ecrire le code du mapper. Tester le code propose en local.
3. Creer un fichier reduce.py et y ecrire le code du reducer. Tester ce code en local.
4. Lancer le job MapReduce et verifier le resultat. Executer :
- cat purchases.txt | map.py
- cat purchases.txt | map.py | sort |redvente.py

4
5.
6.
Partie V : Statistiques des ventes
Dans cette partie, vous allez travailler sur le fichier purchases.txt qui vous a ete deja fourni.
Les differents champs de ce fichier sont de la forme suivante :
date temps magasin produit cout
Ecrire les mappers et reducers permettant de :
1. Donner le total des ventes par categorie de produits.
2. Donner le montant de la vente le plus eleve pour chaque magasin.
3. Quel est le nombre total des ventes et la valeur totale des ventes de tous magasins confondus?
Verifier tous les resultats obtenus en vous referant au fichier de donnees utilise.

Vous aimerez peut-être aussi