Académique Documents
Professionnel Documents
Culture Documents
Big Data
2015-2016
I. Hadoop
I.1 Présentation
Apache Hadoop1 est un framework open-source pour stocker et traiter les données volumineuses
sur un cluster. Il est utilisé par un grand nombre de contributeurs et utilisateurs. Il a une licence
Apache 2.0.
Figure 1 : Hadoop
I.2 Installation
Ce TP est inspiré de la formation “Intro to Hadoop and Map Reduce” fait par Cloudera2 et publié sur
Udacity3. Ils fournissent une machine virtuelle où Hadoop, ainsi qu’un grand nombre d’outils de son
écosystème, sont préinstallés.
La machine virtuelle est téléchargée à l’adresse:
http://www.cloudera.com/downloads/quickstart_vms/5-5.html C’est une machine Linux,
distribution CentOS.
Une fois la VM lancée, vous êtes automatiquement identifié comme étant un utilisateur cloudera
avec le username cloudera et le mot de passe cloudera. Ce même mot de passe est utilisé
pour l’accès root pour avoir les privilèges sudo , l’accès root à MySQL, l’accès à Hue et à Cloudera
Manager. Pour les besoins du TP :
1
Apache Hadoop: hadoop.apache.org
2
Cloudera : Plateforme de BigData https://www.cloudera.com/
3
Udacity : Plateforme de eLearning https://www.udacity.com/
Page 2
TP1 : Initiation à Hadoop et Map-Reduce
Page 3
TP1 : Initiation à Hadoop et Map-Reduce
Dans le tableau suivant, nous résumons les commandes les plus utilisées dans Hadoop:
II. MapReduce
II.1 Présentation
MapReduce est un patron d’architecture de développement permettant de traiter les données
volumineuses de manière parallèle et distribuée.
Il se compose principalement de deux types de programmes:
- Les Mappers : permettent d’extraire les données nécessaires sous forme de clef/valeur,
pour pouvoir ensuite les trier selon la clef
- Les Reducers : prennent un ensemble de données triées selon leur clef, et effectuent le
traitement nécessaire sur ces données (somme, moyenne, total…)
Page 4
TP1 : Initiation à Hadoop et Map-Reduce
Pour notre TP, nous utilisons le langage Python pour développer les Mappers et les Reducers. Les
traitements intermédiaires (comme le tri par exemple) sont effectués automatiquement par
Hadoop.
II.2 Mapper
Soit un code comportant 6 champs, séparés par des tabulations. Le Mapper doit:
Remarque : Python est un langage qui délimite les différents blocs en utilisant
les tabulations, faites alors bien attention à vos indentations!
Activité 2. Créer d’abord un fichier mapper.py dans le répertoire code, dans lequel vous écrirez le
code présenté plus haut. Étudier ensuite ce que vous venez d’écrire.
- Que permet de faire chaque ligne de ce code?
- Tester ce mapper en local sur les 50 premières lignes du fichier purchases.txt en tapant
l’instruction suivante, directement à partir de votre répertoire code:
head -50 ../data/purchases.txt | ./mapper.py
Page 5
TP1 : Initiation à Hadoop et Map-Reduce
II.3 Reducer
Le Reducer permet de faire le traitement désiré sur des entrées sous forme de clef/valeur,
préalablement triées par Hadoop (on n’a pas à s’occuper du tri manuellement).
Dans l’exemple précédent, une fois que le Mapper extrait les couples (store,cost), le Reducer aura
comme tâche de faire la somme de tous les coûts pour un même magasin. Le code du Reducer est
le suivant :
#!/usr/bin/python
import sys
salesTotal = 0
oldKey = None
oldKey = thisKey
salesTotal += float (thisSale)
if oldKey != None:
print oldKey,“\t”, salesTotal
Activité 3.
- Expliquer ce code.
- Tester ce Reducer sur le disque local, en utilisant cette instruction.
head -50 ../data/purchases.txt |./mapper.py |sort |./reducer.py
Page 6
TP1 : Initiation à Hadoop et Map-Reduce
Cette instruction donne en paramètres les fichiers correspondant aux Mappers et Reducers, et les
répertoires contenant le fichier d’entrée (myinput) et la sortie à générer (joboutput). Le répertoire
de sortie, après exécution, contiendra un fichier appelé part-00000, représentant la sortie désirée.
Remarque : Le répertoire d’entrée doit contenir un seul fichier. Le répertoire de sortie ne doit pas
exister avant l’exécution de l’instruction.
Pour faciliter le travail, créer un raccourci pour cette instruction (dans le fichier ~/.bashrc) en
tapant les lignes suivantes :
mapreduce(){
hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/
streaming/hadoop-streaming-2.6.0-mr1-cdh5.5.0.jar -mapper
$1 -reducer $2 -file $1 -file $2 -input $3 -output $4
}
alias hs=mapreduce
Activité 4.
- Exécuter un job hadoop sur le fichier purchases.txt en utilisant les fichiers mapper.py et
reducer.py déjà fournis. Stocker le résultat dans un répertoire joboutput. Sauvegarde
ensuite le fichier part-00000 dans votre répertoire local.
- Quelle est la totalité des ventes du magasin de Buffalo ?
Page 7
TP1 : Initiation à Hadoop et Map-Reduce
III. Application
Nous continuons à travailler avec le même fichier en entrées (purchases.txt), mais pour obtenir
des résultats différents. Le but est donc d’écrire vos propres Mappers et Reducers.
Activité 5.
Activité 6.
Activité 7.
- Quel est le nombre total des ventes et la valeur totale des ventes de tous magasins
confondus?
Page 8
TP1 : Initiation à Hadoop et Map-Reduce
IV. Homework
Partie 1 :
Votre première tâche est de chercher comment traduire le code des exemples Map-Reduce que
vous avez développé en classe en Java. Vous trouverez dans la machine virtuelle l’IDE Eclipse
préinstallé, ainsi que des exemples à faire tourner, vous pourrez les utiliser comme point de départ.
Partie 2 :
Vous aurez comme objectif, à la fin de ce semestre, de créer votre propre réseau social, qui tourne
autours d’un thème original de votre choix.
Comme première étape, votre tâche sera :
1. De définir un nom, un logo et un thème pour votre réseau social
2. De réaliser une maquette (à la main ou bien avec un outil de votre choix) de l’ensemble des
pages de votre site
Page 9