Vous êtes sur la page 1sur 25

Traitement

du Big Data
TP 3
Le modèle de programmation Map Reduce

Nassim Bahri M1 DSSD


Objectifs du Comprendre les concepts de base

TP du modèle de programmation
MapReduce

Tester un job MapReduce grâce au


fameux exemple : WordCount
Présentation
Un Job Map-Reduce se compose principalement de deux types de programmes :

Mappers : permettent d’extraire les données nécessaires sous forme de


clé/valeur, pour pouvoir ensuite les trier selon la clé.

Reducers : prennent un ensemble de données triées selon leur clé, et effectuent


le traitement nécessaire sur ces données (somme, moyenne, total...)
WordCount
Nous allons tester un programme MapReduce grâce à un exemple très simple, le
WordCount, l'équivalent du HelloWorld pour les applications de traitement de
données. Le Wordcount permet de calculer le nombre de mots dans un fichier
donné, en décomposant le calcul en deux étapes :

L'étape de Mapping : qui permet de découper le texte en mots et de délivrer


en sortie un flux textuel, où chaque ligne contient le mot trouvé, suivi de la valeur
1 (pour dire que le mot a été trouvé une fois)

L'étape de Reducing : qui permet de faire la somme des 1 pour chaque mot,
pour trouver le nombre total d'occurrences de ce mot dans le texte.
WordCount
Illustration avec un exemple

Bear: 2
Deer Bear River Exécution du job MapReduce
Car: 3
Car Car River
Deer: 2
Deer Car Bear
River: 2

Résultat
Fichier words.txt (input)
WordCount
Etape 0 : Placer le fichier sous HDFS
Block 1
Data Node 1
Deer Bear River
Car Car River
Deer Bear River

Car Car River

Data Node 2
Deer Car Bear Block 2

Deer Car Bear


Fichier words.txt (input)
WordCount KEY: VALUE

Deer: 1
Etape 1: Le mapping Bear: 1
River:1
Data Node 1
Block 1 Car: 1
Task Tracker 1 Car: 1
Deer Bear River River: 1
Exécution de la
Car Car River
fonction Map

Data Node 2
Block 2 Deer: 1
Car: 1
Task Tracker 2
Bear: 1
Deer Car Bear
WordCount
Etape 2.1 : Le shuffle (étape implicite dans MapReduce)
LIST(KEY: VALUE)
Deer: 1 Data Node 1
Bear: 1 Deer: 1
River:1 Bear: 1 Task Tracker 1
Output 1
Car: 1 Exécution de la River:1
Car: 1 fonction shuffle Car: 1
River: 1 Car: 1
River: 1
Deer: 1
Deer: 1 Car: 1
Output 2 Car: 1 Bear: 1
Bear: 1
WordCount
Etape 2.2 : Le sort (étape implicite dans MapReduce)

LIST(KEY: VALUE) KEY: LIST(VALUE)

Data Node 1 Deer: 1


Bear: [1, 1]
Bear: 1
Task Tracker 1 River:1 Exécution de la
Car: [1, 1, 1]
Car: 1 fonction sort
Car: 1
Deer: [1, 1]
River: 1
Deer: 1
River: [1, 1]
Car: 1
Bear: 1
WordCount
Etape 3 : Le reduce

KEY: LIST(VALUE)

Data Node 1 Bear: 2


Bear: [1, 1]
Task Tracker 1 Exécution de la
Car: 3
fonction reduce
Car: [1, 1, 1]
Deer: 2
Deer: [1, 1]
River: 2
River: [1, 1]
WordCount
Processus complet d'un job MapReduce
Implémentation
Commençons par créer un projet Maven dans IntelliJ IDEA. Nous utiliserons dans
notre cas JDK 1.8.

Ouvrir le fichier pom.xml, et ajouter les dépendances suivantes pour Hadoop,


HDFS et Map Reduce :

1. hadoop-common
2. hadoop-mapreduce-client-common
3. hadoop-mapreduce-client-core
4. hadoop-hdfs
Implémentation
<dependencies>
Pour ajouter une bibliothèque java, il faut juste
<dependency>
<groupId>org.apache.hadoop</groupId> chercher son nom de le repository de maven.
<artifactId>hadoop-common</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-common</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId> Choisissez la version.
<version>3.3.2</version>
<scope>test</scope>
</dependency>
</dependencies>
Implémentation
1- Créer la classe AppMapper, contenant ce code :
Implémentation
2- Créer la classe AppReducer, contenant ce code :
Implémentation
3- Créer la classe Main, contenant ce code :
Implémentation
3- Créer la classe Main, contenant ce code : (suite)
Tester Map Reduce sur
votre cluster
1- Créer le fichier JAR de votre projet
Tester Map Reduce sur
votre cluster
2- Préparer les fichiers à traiter

Créer un dossier input dans votre


cluster hdfs et placer le fichier
words.txt dedans.
Tester Map Reduce sur
votre cluster
3- Copier le fichier JAR dans votre conteneur docker

Vérifier si le fichier JAR a bien été copié


dans votre conteneur docker.
Tester Map Reduce sur
votre cluster
Lancer le job map reduce avec cette commande :

Dans notre cas la commande sera la suivante :


Tester Map Reduce sur
votre cluster
Le résultat d'exécution de cette dernière commande sera stocké dans le répertoire
output dans un fichier nommé part-r-00000. Pour afficher le contenu de ce fichier
en ligne de commande, taper :
Correction

Le code source du job est disponible


sur l'adresse suivante :

https://github.com/BigDataESEN
/HadoopWordCount
Références

https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-
mapreduce-client-core/MapReduceTutorial.html

https://kontext.tech/column/hadoop/265/default-ports-used-by-hadoop-
services-hdfs-mapreduce-yarn
Merci pour votre
attention

Vous aimerez peut-être aussi