Ecrire un programme mapreduce en java
- ines slimene
- 21 juin 2019
- 2 min de lecture
Dernière mise à jour : 26 juin 2019
Les étapes de création d’un projet MapReduce sous Eclipse sont :
1. Créer un projet Java
2. Ajouter les fichiers jar existants dans le répertoire /usr/lib/hadoop/client-0.20 au classpath du projet.

3. Créer les trois classes suivantes :
a. Mapper
b. Reducer
c. Driver pour exécuter le job
4. Exécuter le projet MapReduce.
Exemple :
Notre but est de chercher la température maximale par année, dans le fichier sample.txt suivant :

L’année est définie par les caractères dont la position est entre 15 et 19
La température est définie par les caractères dont la position est entre 88 et 92
Mapper
Le Mapper doit :
- Séparer les différents champs
- Extraire les éléments voulus à partir de ces champs, sous forme de clef/valeur.
Pour calculer la température par année, le couple (clef, valeur) à extraire est (année, température).
Pour faire cela, le code du Mapper est le suivant :

Reducer
Dans l’exemple précédent, une fois que le Mapper extrait les couples (année, température), le Reducer aura comme tâche de calculer la température maximale par année. :
Le code du Reducer est le suivant :

Créer le job driver de MapReduce
· Le rôle du job driver est de définir le fichier jar qui va contenir le driver, le mapper et le reducer.
· Démarrer le job mapreduce
Le code du Driver est le suivant :

Exécution :
Le code MapReduce peut être exécuté dans un cluster ou bien dans un IDE comme éclipse. La différence entre les deux modes d’exécution est que, dans le cas d’éclipse, le résultat est généré localement tandis que, pour l’exécution dans un cluster, ils seront générés dans HDFS.
1. Exécution dans eclipse :
Pour lancer le job mapreduce, il suffit d’exécuter le projet java. Mais avant nous devons spécifier le fichier d’entrer qui sera utilisé durant la phase de Mapping (dans ce cas : sample.txt) et la sortie à générer (Par exemple output)

Le répertoire de sortie OUTPUT, après exécution, contiendra un fichier appelé part-00000, représentant la sortie désirée.
Dans cet exemple, le résultat est le suivant :

2. Exécution sous HDFS :
Tout d’abord, nous devons créer le fichier jar :
Clic droit sur le nom du projet puis cliqué sur EXPORT.

Lancer le job sur Hadoop implique qu’on fera appel au mapper puis au reducer sur une entrée volumineuse, et obtenir à la fin un résultat, directement dans HDFS. Pour faire cela :
- Créer un répertoire nommé ‘myinput’ dans HDFS
hadoop fs -mkdir myinput
- Copier le fichier sample.txt sous le répertoire myinput dans HDFS.
hadoop fs -put atelier/sample.txt myinput
- Exécuter l’instruction suivante :
hadoop jar MaxTemperature.jar myinput/sample.txt joboutput
Cette instruction donne en paramètres le fichier jar généré, 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.
hadoop fs -ls joboutput
hadoop fs -cat joboutput/part-r-00000
Remarque : Le répertoire de sortie ne doit pas exister avant l’exécution de l’instruction.

Commentaires