100% ont trouvé ce document utile (1 vote)
579 vues5 pages

TP Hadoop: MapReduce et YARN en Java

Ce TP présente le développement d'une application MapReduce en Java pour compter les mots dans un document texte. Les étapes incluent la création d'un projet Maven, l'implémentation d'un Mapper et d'un Reducer, et l'exécution de l'application sur un cluster Hadoop simulé avec Docker.

Transféré par

Raja Bs
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
579 vues5 pages

TP Hadoop: MapReduce et YARN en Java

Ce TP présente le développement d'une application MapReduce en Java pour compter les mots dans un document texte. Les étapes incluent la création d'un projet Maven, l'implémentation d'un Mapper et d'un Reducer, et l'exécution de l'application sur un cluster Hadoop simulé avec Docker.

Transféré par

Raja Bs
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ISSAT Mateur A.U.

2021-2022 2ème MP SSR

TP 2 Big Data
Hadoop, MapReduce et YARN

Objectif :
Ce TP constitue un premier pas vers l’utilisation de YARN pour exécuter une application
Map/Reduce.
Description :
Au terme de ce TP, vous serez capables :
 de développer une chaîne de traitement Hadoop/MapReduce (un Mapper et un Reducer) en
java,
 de tester en local sur votre propre machine si la chaîne de traitement est conforme à vos
attentes,
 de déployer et exécuter votre chaîne de traitement MapReduce sur un Docker Container
simulant un cluster Hadoop,
 et de ramener vos résultats d’analyse en local sur votre machine.
Environnement logiciel :

 Apache Hadoop version 3.2.1 sur Docker et 3.3.1 directement sur votre machine
 IDE : Eclipse
 JDK : 1.8
 Docker [[Link]

1ère partie : Développer une chaîne de traitement Hadoop/MapReduce avec java

Objectif :
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.
1ère étape : Commençons par créer un projet Maven dans IntelliJ IDEA. Nous utiliserons dans notre
cas JDK 1.8.
Définir les valeurs suivantes pour votre projet:
 GroupId: [Link]
 ArtifactId: wordcount
 Version: 1

1
Houda Benali
ISSAT Mateur A.U. 2021-2022 2ème MP SSR

2ème étape : ajoutez les dépendances suivantes


<dependencies>
<dependency>
<groupId>[Link]</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.3.1</version>
</dependency>

<dependency>
<groupId>[Link]</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>hadoop-mapreduce-client-common</artifactId>
<version>3.3.1</version>
</dependency>
</dependencies>
3ème étape : ajoutez un package « [Link].tp2 » sous le répertoire src/main/java
4ème étape : créez une classe « [Link] » dans le package « [Link].tp2 »
package [Link].tp2;

import [Link];
import [Link];
import [Link];

import [Link];
import [Link];

public class WordCountMapper extends Mapper<Object,Text,Text,IntWritable>{

private final static IntWritable one = new IntWritable(1);


private Text word = new Text();

public void map(Object key, Text value, [Link] context) throws


IOException,InterruptedException {
StringTokenizer itr = new StringTokenizer([Link]());
while ([Link]()) {
[Link]([Link]());
[Link](word, one);
}
}
}
2
Houda Benali
ISSAT Mateur A.U. 2021-2022 2ème MP SSR

5ème étape : créez une classe « [Link] » dans le package « [Link].tp2 »


package [Link].tp2;
import [Link];
import [Link];
import [Link];
import [Link];
public class WordCountReducer extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values,Context context)
throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values){
[Link]("value: "+[Link]());
sum += [Link]();
}
[Link]("--> Sum = "+sum);
[Link](sum);
[Link](key, result);
}
}
6ème étape : créez une classe « [Link] » dans le package « [Link].tp2 »
package [Link].tp2;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class WordCount {
public static void main(String[] args) throws IOException,
InterruptedException, ClassNotFoundException {
Configuration conf = new Configuration();
Job job = [Link](conf, "word count");
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link](job, new Path(args[0]));
[Link](job, new Path(args[1]));
[Link]([Link](true) ? 0 : 1);
}
}

3
Houda Benali
ISSAT Mateur A.U. 2021-2022 2ème MP SSR

7ème étape : créer le jar et utilisez la ligne de commandes pour le tester sur la version hadoop que vous
avez installée :
 Formatez le système de fichiers : hdfs namenode –format
 Démarrez les démons (NameNode et DataNode) : %HADOOP_HOME%\sbin\[Link]
 Démarrez les démons (NodeManager et RessourceManager) : %HADOOP_HOME%\sbin\start-
[Link]
 Créez les deux dossiers user et user/ « your-username »
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/<votre user_name>

 Créez un dossier input dans HDFS : hdfs dfs -mkdir input


 Placez un fichier [Link] dans le répertoire input créé : hadoop fs -put path\to\[Link] input\
 Exécutez le Map/Reduce Job : hadoop jar path\to\[Link] [Link]
input\[Link] output
 Affichez le contenu du dossier output : hadoop fs –ls output
 Affichez les dernières lignes du ficher part-r-00000 qui est dans le dossier output : hadoop fs -
tail output\part-r-00000
 Téléchargez donc le résultat dans un emplacement de votre choix : hadoop fs -get output/part-r-
00000 C: \
2ème partie : tester avec Docker Hadoop Container
Etape 1 : Installer Docker
Pour déployer le framework Hadoop, nous allons utiliser des containers Docker
[[Link] L'utilisation des containers va garantir la consistance entre les
environnements de développement et permettra de réduire considérablement la complexité de
configuration des machines (dans le cas d'un accès natif) ainsi que la lourdeur d'exécution (si on opte
pour l'utilisation d'une machine virtuelle).
Nous avons pour le déploiement des ressources de ce TP suivi les instructions présentées ici :
([Link]
using-docker-and-docker-compose/)
 Vérifiez l’installation de Docker : dans l’invite de commande (en tant qu’administrateur),
exécutez : docker --version
 Vérifiez que docker-compose est fonctionnelle : docker-compose --version
 Vérifiez que Docker fonctionne correctement : docker ps
 Vérifiez que Git est installé sur votre machine
Etape 2 : la mise en place du container
 Commencez par cloner le dossier contenant le Hadoop Container :
git clone [Link]
 Le répertoire contient un fichier [Link] qui contient la configuration
nécessaire à la création des containers pour les composants de Hadoop (namenode,
datanode etc.). Naviguez jusqu’à le dossier copié et tapez la commande
docker-compose up –d
 A la fin, tapez docker ps pour voir les containers Hadoop en cours d’exécution

4
Houda Benali
ISSAT Mateur A.U. 2021-2022 2ème MP SSR

Etape 3 : Tester la configuration avec un exemple Map/Reduce


 Télécharger une application .jar permettant de calculer le nombre d’occurrences des mots
dans un fichier texte. (par exemple :
[Link]
examples/2.7.1/[Link]
 Copiez le jar dans le dossier /tmp du namenode :
docker cp « your-path »\[Link]
namenode:/tmp/
 Créez un fichier .txt et ajoutez quelques lignes
 Déplacez le fichier dans le namenode : docker cp « yor-path »\[Link]
namenode:/tmp/
 Exécutez le terminal bash : docker exec -it namenode /bin/bash
 Dans le terminal bash, exécutez la commande hdfs dfs -mkdir -p /user/root/input
pour créer le dossier input qui contiendra le fichier à analyser.
 Copiez donc le fichier texte déjà créé dans le dossier input :
hdfs dfs -put [Link] /user/root/input
 Exécutez le Job MapReduce (le fichier jar)
hadoop jar tmp/[Link]
[Link] input output
 Vérifiez la bonne exécution de cette opération en tapant : hdfs dfs -ls
/user/root/output, pour voir le contenu du dossier output
 Vous pouvez aussi listez les dernières lignes du fichier résultat avec la commande :
hadoop fs -tail /user/root/output/part-r-00000

5
Houda Benali

Vous aimerez peut-être aussi