Table des Matières



Wordcount, en local

Nous allons ici faire fonctionner l’algorithme map-reduce qui compte les mots d’un fichier texte, en local, c.-à-d. sans exploiter le parallélisme que propose le framework Hadoop. Le programme est constitué de deux scripts python qui sont appelés successivement selon la méthode décrite ci-dessous. Il s’agit ici surtout de comprendre la logique algorithmique.

Remarque : Pour ce TP et le suivant, vous devez savoir ouvrir un Terminal sur votre machine, quelque soit le système d’exploitation. Sous Windows 10 (et successeurs), vous pourrez utiliser le programme Powershell (installé par défaut) qui est très similaire au Terminal de Linux et de Mac OS X. Vous devez aussi savoir a minima naviguer dans vos dossiers à l’aide de la commande cd. Typiquement :

cd c:\Users\stephane\TP_Hadoop # Windows
cd ~\stephane\TP_Hadoop        # Mac, linux

Si vous souhaitez remonter d’un niveau dans la hiérarchie des dossiers: cd ... Des tutos vidéo existent pour découvrir les commandes de bases, dont celui-ci. Noter enfin que Powershell inclus git, wget et ssh : trois outils que nous utiliserons durant les TPs.


Mise en place

Pour récupérer le scripts, suivez les consignes:

  • Créez un répertoire de travail et téléchargez dans ce répertoire les 2 scripts python ainsi le livre dracula au format texte:

Execution des scripts python

Remarques aux utilisateurs Windows - Si vous utilisez Windows, remplacer python par python.exe. Pensez à faire ce changement partout dans l’énoncé. Si la commande python.exe ne fonctionne pas, c’est que l’endroit où est stocké le programme python.exe n’est pas connu de votre machine, il faut donc le préciser en modifiant la variable d’environnement PATH. Pour cela, vous pouvez suivre les indications données dans la Section Method 2: Manually add Python to Windows Path de ce lien.

  • Ouvrez un Terminal et déplacez-vous dans votre dossier de travail (avec la commande cd).

  • Lancez la commande suivante et observez le résultat:

cat dracula | python wc_mapper.py
  • Lancez ensuite la commande entière et observez le résultat:
cat dracula | python wc_mapper.py | sort | python wc_reducer.py

Remarque importante La première ligne de tous vos scripts python devra être

#!/usr/bin/env python3

Cette ligne indique que si le script doit être exécuté, alors c’est avec python3 qu’il doit l’être.

Amelioration des scripts

En regardant attentivement la sortie de la commande précédente, on s’aperçoit de deux “défauts”: - la casse des mots est prise en compte. Ainsi les mots “Youth” et “youth” sont considérés comme 2 catégories différentes. - les signes de ponctuation sont égaement pris en compte. Ainsi les mots “Youth”, “Youth,” et “Youth.” sont considérés comme 3 catégories différentes.

Copiez les 2 scripts dans 2 nouveaux fichiers:

cp wc_mapper.py  wc_mapper_improved.py
cp wc_reducer.py wc_reducer_improved.py

et modifiez ces nouveaux fichiers pour que le comptage de mots ne soit plus sensible à ces 2 défauts.