Sommaire

Wordcount, en local

Nous allons ici faire fonctionner l’algorithme map-reduce qui compte les mots d’un fichier texte, en local, i.e. 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 similaires 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.


Récupération et lancement des scripts Python

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

  • Ouvrez un Terminal et déplacez-vous dans votre dossier de travail (avec la commande cd). Tapez la commande permettant de récupérer les fichiers nécessaires à ce TP.
git clone https://gitlab.ec-lyon.fr/sderrode/TP_BigData_ECL.git

Constatez, dans un gestionnaire de fichiers, que cette commande a permis de rapatrier des fichiers répartis dans plusieurs dossiers dont : TP_Hadoop et TP_SparQL. Nous allons ici travailler sur le dossier TP_Hadoop. Pensez à conserver ce répertoire durant toute la durée du MSO, car nous serons amenés à l’utiliser lors de toutes les séances de TP.

  • Dans le Terminal, déplacez-vous dans le dossier wordcount, en lançant successivement les 3 commandes suivantes :
cd TP_BigData_ECL
cd TP_Hadoop
cd wordcount

ou plus simplement :

cd TP_BigData_ECL/TP_Hadoop/wordcount

La commande ls permet de lister le contenu du dossier. Vous pouvez observer la présence des 2 fichiers mapper.py et reducer.py. Commençons par télécharger le livre Dracula (libre de droit) depuis cette adresse (attention aux ajouts d’extension automatique de Windows), ou en exécutant, depuis un Terminal, la commande

wget http://www.textfiles.com/etext/FICTION/dracula

Notez que le fichier texte dracula ne comporte pas l’extension .txt. ATTENTION Si la commande précédente ne fonctionne pas sous Windows Powershell, essayez la suivante

Invoke-WebRequest -Uri http://www.textfiles.com/etext/FICTION/dracula -OutFile dracula
  • Lancez la commande suivante et observez le résultat:
# Pour Mac/Linux
cat dracula | python mapper.py
# Pour Windows
cat dracula | python.exe mapper.py

Remarques Windows
- Si la commande python.exe ne fonctionne pas sous Windows, c’est que le répertoire 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.

  • Si, dans vos prochains scripts python, la première ligne est identique à celle-ci
#!/usr/bin/env python3

alors le programme pourra s’exécuter sans faire appel explicitement à python ou python.exe. Constatez que le script mapper.py contient bien cette ligne (avec la commande more mapper.pyqui liste sur l’écran le contenu du fichier). Ainsi, la commande suivante devrait fonctionner quelque soit votre système d’exploitation:

cat dracula | ./mapper.py

La présence de ./ signifie : ‘le fichier mapper.py qui se trouve dans le répertoire en cours’.

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