Table des Matières



Tests et exercice

1. wordcount improved!

Nous allons voir ici comment rappatrier les scripts améliorés rédigés durant la première phase de ce TP.

Pour cela, ouvrez un second Terminal (laissez le premier ouvert, il va nous resservir!), et déplacer-vous dans le dossier de travail qui contient les scripts wc_mapper.py et wc_reducer.py, modifiés par vos soins durant la première partie. La commande suivante permet de copier ces 2 fichiers vers l’espace Linux, dans le dossier wordcount

docker cp wc_mapper_improved.py  hadoop-master:/root/TP_Hadoop/wordcount/
docker cp wc_reducer_improved.py hadoop-master:/root/TP_Hadoop/wordcount/

Retenez la syntaxe, car elle vous sera utile plus tard, pour rapatrier les nouveaux scripts python que vous aurez développés.

Revenez alors vers le premier Terminal (ne fermez pas le second, il sera utile plus tard), et vérifiez avec la commande ls que les 2 fichiers sont bien présents. Il faut maintenant

  • rendre ces 2 scripts exécutables:
chmod +x wc_mapper_improved.py
chmod +x wc_reducer_improved.py
  • Remarque Pour les utilisateurs de Windows uniquement : il faut aussi convertir les caractères de saut de lignes, qui sont différents entre Windows et Linux. Pour chaque fichier texte (p. ex., fichier.py) que vous rapatrierez depuis votre machine sur le compte Linux, il conviendra de lancer :
dos2unix fichier.py

Il faudra appliquer ce protocole aux fichiers mapper.py et reducer.py, à chaque fois que vous les aurez modifiés sous Windows.

Souvenez-vous de cette manip., car il faudra aussi la mettre en place sur vos nouveaux scripts !

2. Multiplication de 2 “grandes” matrices avec Hadoop

  • Déplacez vous dans le répertoire matrice du compte Linux :
cd ~/TP_Hadoop/matrice/
  • Lancez le programme matrice.py pour générer 2 matrices et les sauvegarder sur votre DD (matriceA.txt et matriceB.txt). Les 2 matrices s’affichent ainsi que le résultat de leur multiplication:
python matrice.py

Déposez ces deux fichiers sur HDFS, dans le répertoire input

hadoop fs -put matriceA.txt input
hadoop fs -put matriceB.txt input
  • Exercice Écrivez un script mapper et un script reducer permettant de réaliser la multiplication de ces 2 matrices, à partir des fichiers matriceA.txt et matriceB.txt.

Remarque importante Il est difficile d’éditer des fichier texte sous le compte Linux comme nous n’avons pas accès à une interface graphique (on peut toujours utiliser l’éditeur nano, p.ex. nano script.py). Ainsi la solution consiste t’elle à rédiger les scripts sous votre système d’exploitation (en utilisant les touils dont vous avez l’habitude, comme spyder ou VSCode) et de transférer le fichier par une commande docker cp... (comme ci-dessus), p.ex.

docker cp multmat_mapper.py  hadoop-master:/root/TP_Hadoop/matrice/
docker cp multmat_reducer.py hadoop-master:/root/TP_Hadoop/matrice/
  • Pour lancer votre job sur le cluster Hadoop, adaptez la commande que nous avons vue précédemment:
hadoop jar $STREAMINGJAR -files multmat_mapper.py,multmat_reducer.py \
    -mapper multmat_mapper.py -reducer multmat_reducer.py \
    -input input/matriceA.txt,input/matriceB.txt -output sortie

Contrôlez que le résultat obtenu est bien le même que celui affiché par le programme matrice.py.