0% ont trouvé ce document utile (0 vote)
10 vues10 pages

TP Bigdata ModouFall

Ce document présente un TP sur le traitement Batch avec Hadoop, HDFS et MapReduce, en se concentrant sur la mise en place d'un mini-cluster composé de trois machines dans des conteneurs Docker. Il décrit les étapes d'installation de Docker, de création des conteneurs, ainsi que les manipulations de fichiers dans HDFS et la création d'un job MapReduce en Java. Enfin, il fournit des exemples de code pour les classes Mapper et Reducer, ainsi que des instructions pour tester et exécuter le job MapReduce.

Transféré par

elmodoucalculator
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
0% ont trouvé ce document utile (0 vote)
10 vues10 pages

TP Bigdata ModouFall

Ce document présente un TP sur le traitement Batch avec Hadoop, HDFS et MapReduce, en se concentrant sur la mise en place d'un mini-cluster composé de trois machines dans des conteneurs Docker. Il décrit les étapes d'installation de Docker, de création des conteneurs, ainsi que les manipulations de fichiers dans HDFS et la création d'un job MapReduce en Java. Enfin, il fournit des exemples de code pour les classes Mapper et Reducer, ainsi que des instructions pour tester et exécuter le job MapReduce.

Transféré par

elmodoucalculator
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

Département Génie Informatique / École Supérieure Polytechnique /

UCAD

Big Data

TP N° 1 : Le traitement Batch avec


Hadoop, HDFS et MapReduce

Préparé par : Professeur :


Modou Fall Mr Ba
Premiere partie : Mise en place de l’environnement Hadoop

Travail 📝 à réaliser:
Le but de cette première partie est de définir un mini-cluster composé de 3 machines qui sont
hébergées chacune dans un conteneur docker : une machine Master et deux machines
Slave. Ces machines seront reliées par un réseau que nous appellerons Hadoop qui
va leur permettre de communiquer
1. Installation de docker
● Rendez vous sur https://hub.docker.com/
● Telecharger Docker et installez-le suivant votre SE
● une fois Docker installé nous pouvons les commandes de
docker 2. Chargement de l’image liliasfaxi/spark-hadoop:hv-2.7.2

3. Création des containers


Comme expliqué, nous visons la création d'un mini-cluster, contenant un
master qui sera notre namenode et deux slaves qui représenteront nos data
nodes. Pour se faire, suivez les étapes suivantes
❖ Créer un réseau qui permettra de relier les trois conteneurs:

❖ Créer et lancer les trois containers


4. Entrer le container Master pour commencer à l'utiliser.

Deuxième partie : Premiers pas avec Hadoop


A. Manipulation des fichiers

● Créer un répertoire dans HDFS, appelé input. Pour cela, taper:

● Nous allons utiliser le fichier purchases.txt comme entrée pour le


traitement MapReduce.

B. Interfaces web pour Hadoop


Haddop nous présente plusieurs interfaces
Avec l’adresse : http://localhost:50070
Avec l’adresse : http://localhost:8088

Troisième partie : Mapreduce avec java

Le but de cette troisième partie est de créer un job map reduce sur notre cluster de containers.
Un job mapreduce se compose principalement de deux types de programmes: - mappers :
permettent d'extraire les données nécessaires sous forme de clef/valeur, pour pouvoir ensuite
les trier selon la clef- 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... )

Total Vente :
Nous allons tester un programme de Mapreduce grâce à un exemple simple 🙂
● L'étape de mapping, qui permet de découper le texte en mots et de délivrer en sortie
un flux textuel, ou chaque ligne contient le magasin trouvé et le prix du produit vendu
● L'etape du reducing, qui permet de faire la somme des prix des produits pour chaque
magasin

A. Creation d’un projet intel ji


● Ouvrir le fichier pom. Xml, et ajouter les dépendances suivantes pour hadoop, hdfs et
mapreduce
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.2</version>
</dependency>
<!--
https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-mapreduce-client-core
-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>2.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-common</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.9</version>
</dependency>
</dependencies>
● TokenizerMapper
package hadoop.mapreduce.mfdev;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;
import java.util.StringTokenizer;

public class TokenizerMapper


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, Mapper.Context context


) throws IOException, InterruptedException {
// StringTokenizer itr = new StringTokenizer(value.toString());
String[] line = value.toString().split(" ");
word.set(line[2]);
one.set((int) Float.parseFloat(line[4]));
context.write(word, one);
}
}
● IntSumReducer
package hadoop.mapreduce.mfdev;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class IntSumReducer


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) {
// System.out.println("value: "+val.get());
sum += val.get();
}
System.out.println(key.toString()+" : "+sum);
result.set(sum);
context.write(key, result);
}
}
● TotalSummer
package hadoop.mapreduce.mfdev;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class IntSumReducer


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) {
// System.out.println("value: "+val.get());
sum += val.get();
}
System.out.println(key.toString()+" : "+sum);
result.set(sum);
context.write(key, result);
}
}

● Tester Mapreduce en Local En sortie nous avons les résultats suivants 👉

● Lancer le cluster mapreduce 🏌:


● Générer le fichier jar
● copier le fichier jar dans hadoop-master

● Revenir au shell du conteneur master, et lancer le job map reduce

Vous aimerez peut-être aussi