Vous êtes sur la page 1sur 59

Faculté des Sciences et Techniques de Tanger

Département Génie Informatique

L’Ingénierie ontologique MODULE


et les techniques d’Intelligence ArtificielleBIG
: ARCHITECTURE pour DATA
la modélisation d’un système e-
Learning adaptatif orienté compétences

LSI– 2022/2023
Faculté des Sciences et Techniques de Tanger
Département Génie Informatique

Hadoop Map Reduce


L’Ingénierie ontologique et les techniques d’Intelligence Artificielle pour la modélisation d’un système e-
Learning adaptatif orienté compétences

LSI– 2022/2023
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
version1

MapReduce v1 intègre trois composants :


 API : Pour permettre au programmeur
l’écriture d’applications MapReduce
 Framework : Services permettant
l’exécution des:
 Jobs MapReduce,
 Shuffle/Sort…
 Resource Management :
Infrastructure pour gérer les nœuds du
cluster, allouer des ressources et
ordonnancer les jobs

3
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Démons de Map Réduce version1

4
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Démons de Map Réduce version1

5
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Démons de Map Réduce version1
 JobTracker
 Divise le travail sur les Mappers et Reducers, s’exécutant sur
les différents nœuds
 Se charge à la fois d’allouer les ressources (mémoire, CPU…)
aux différentes tâches et de coordonner l’exécution des jobs
Map-Reduce

 TaskTracker
 S’exécute sur chacun des nœuds pour exécuter les vraies
tâches de MapReduce
 Choisit en général de traiter (Map ou Reduce) d’un bloc sur la
même machine que lui.

6
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Architecture générale de Map Réduce version1

7
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Problèmes?

 Le Job Tracker a trop de responsabilités:


 Gérer les ressources du cluster,
 Gérer tous les jobs :
 Allouer les tâches et les ordonnancer
 Monitorer l’exécution des tâches
 ..etc.
 Si le Job Tracker tombe en panne, tous les jobs doivent
redémarrer
 Le Job Tracker est fortement intégré à Map Reduce
 Problème d’intéroperabilité: impossible d’exécuter des applications
non MapReduce sur HDFS

8
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Solution:

YARN : Yet-Another-Resource-Negotiator est aussi appelé MapReduce 2.0


YARN Répond aux problématiques suivantes:
 Problème de limite de « scalability » notamment pour une meilleure séparation
de la gestion de l’état du cluster et des ressources ~4000 Nœuds
 Problème d’allocation des ressources

9
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Version 2 : YARN

 MapReduce v2 sépare la gestion des ressources de celle des tâches MR


 les nœuds ont des ressources (CPU, mémoire..) allouées aux applications à la
demande

 Définition de nouveaux démons:


 Resource Manager remplace le JobTracker et ne gère que les ressources du
cluster
 Application Master (déployée sur les esclaves) est allouée par application pour
gérer les tâches
 Support les applications MR et non-MR

10
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Solution:

11
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
SPLITS

• Les fichiers dans MapReduce sont sauvés en Blocs (64 /128 MB)

• MapReduce divise les données en fragments ou splits.


• 1 map task est éxecuté sur chaque split.

• "split points" définie le caractère de fin de line qui détermine un


enregistrement (Record) de fichiers

• "InputSplitter" classe qui importe les fichiers et les transforme en


splits,

• L'objectif est de traiter autant de données que possible localement.

12
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Classes (SPLITS)
• Il existe 3 principals classes de lecture de données dans MapReduce:

13
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Classes (SPLITS)
• Il existe 3 principals classes de lecture de données dans MapReduce:

public abstract class InputFormat<K, V> {


public abstract List<InputSplit> getSplits(JobContext context)
throws IOException, InterruptedException;

public abstract RecordReader<K,V> createRecordReader(InputSplit split,


TaskAttemptContext context)
throws IOException, InterruptedException;
}
14
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Classes (SPLITS)
1. InputFormat,
• Effectue un split logique des fichiers d'entrée pour le Job.
• Chaque InputSplit est ensuite assigné à un Mappeur individuel pour traitement.
• Créer un record reader pour un split de donnée,
• transforme le records en <key, value>.

15
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Classes (SPLITS)
2.InputSplitter,

• Divise le fichier en Splits pour les jobs,


• Obtient la taille du split,
• Obtient la liste des nœuds (par nom) où les données seraient locales.

16
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Classes (SPLITS)
3. RecordReader,
• Lit les Splits en format de Records
(LineRecordReader)
• Appelé une fois à l'initialisation,
• Lit la clé suivante, paire de valeurs,
• Obtenir la clé actuelle
• Obtenir la valeur actuelle
• Progression du record reader vers le
nouveau record,

17
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Classes (SPLITS)
• Généralement, un Split ne se produit pas à la fin d'un bloc,

• Les fichiers sont lus dans les enregistrements par la classe RecordReader
• Normalement, le RecordReader démarre et s'arrête aux points de partage.

• LineRecordReader va lire à la fin du split jusqu'à la fin de la ligne.


• HDFS enverra la pièce manquante du dernier enregistrement sur le réseau

• De même, le LineRecordReader du Bloc 2 ne tiendra pas compte de la première ligne


incomplète

Node 1 Node 2

Tiger\n ther\n
Tiger\n Tiger\n
Lion\n Wolf\n
Pan Lion

18
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Classes (SPLITS)
• les Map Tasks lisent les fichiers en définissant une classe InputFormat

• Les Map Tasks attendent les paires <clé, valeur>,

• Pour lire les fichiers texte délimités par des lignes, Hadoop fournit la classe
TextInputFormat:
• Il renvoie une clé, paire de valeurs par ligne dans le texte
• La valeur est le contenu de la ligne
• La clé est le décalage du caractère de nouvelle ligne,

Node 1 Node 1
Tiger <0, Tiger>
Lion <6, Lion>
Lion <11, Lion>
Panther <16, Panther>
Wolf <24, Wolf>
… …

19
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Exécution
2. get new job ID
MapReduce 1. run job 5. initialize job
JobClient JobTracker
program
4. submit job
client JVM
jobtracker node
client node
7. heartbeat
6. retrieve
3. copy job (returns task)
input splits
resources

Distributed TaskTracker
8. retrieve
file system
job resources 9. launch
(e.g. HDFS)
child JVM

Child
• Client: Soumet les travaux (Jobs) MapReduce,
• JobTracker: Coordonne l’éxecution du Job, 10. run
décompose le job en map and reduce tasks pour MapTask
chaque noeud pour travailler sur le cluster. or
ReduceTask
• TaskTracker: Execute les fonctions de map et
reduce. tasktracker node

20
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Ordonnancement (Scheduling):

 Chaque travail utilise le cluster entier, les jobs attendent donc leur tour.
 Peut définir des priorités pour les travaux dans la file d'attente (5 files
d'attente avec des priorités)

Very Low Normal High Very


Low High

J3

J6 J2

J7 J5 J4 J1

21
CH2 Architectures Big Data usuelles

ARCHITECTURE

MAP / REDUCE :
Tolérance aux fautes:

• Les mécanismes de tolérance aux pannes implémentés dans


Hadoop se limitent à réaffecter des tâches lorsqu'une exécution
donnée échoue

• En cas d'échec d'une tâche affectée à un TaskTracker donné,


une communication via le Heartbeat est utilisée pour informer le
JobTracker, qui réaffectera la tâche à un autre nœud si possible

22
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Tolérance aux fautes:
JobTracker node

JobTracker 3 JobTracker fails

heartbeat

TaskTracker 2 TaskTracker fails

child JVM

Child

1 Task fails
MapTask
or
ReduceTask

TaskTracker node

23
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Combiner:
 Pour des raisons de performance, un agrégat local dans la Map Task peut être utile
 Réduit la quantité de données à copier sur le réseau
 Réduit également l'effort de fusion Après la tâche de mappage et avant le shuffle,

Node 1 Node 1
<Tiger, 1> <Tiger, 1>
<Lion, 1> <Lion, 2>
<Lion, 1> <Panther, 1>
<Panther, 1> …

Node 2 Node 2
<Tiger, 1> <Tiger, 2>
<Tiger,1> <Panther, 1>
<Panther, 1> …

24
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE

 Patron d’architecture de développement


permettant de traiter des données volumineuses
de manière parallèle et distribuée

 A la base, le langage Java est utilisé, mais grâce à


une caractéristique de Hadoop appelée Hadoop
Streaming, il est possible d’utiliser d’autres langages
comme Python….

 Au lieu de parcourir le fichier séquentiellement (bcp


de temps), il est divisé en morceaux qui sont
parcourus en parallèle.

25
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Fonctionnement:

 Les Mappers sont de petits programmes qui


commencent par traiter chacun une petite
partie des données,

 Leurs sorties représentent les enregistrements


intermédiaires sous forme d’un couple :
 (clef, valeur)
 Une étape de Mélange et Tri s’ensuit:
 Mélange : Sélection des piles de fiches à
partir des Mappers
 Tri : Rangement des piles par ordre au
niveau de chaque Reducer
 Chaque Reducer traite un ensemble
d’enregistrements à la fois, pour générer les
résultats finaux.

26
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Fonctionnement:

Fonctionnement de Map Réduce

27
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Fonctionnement:

 Etapes d’un traitement MapReduce:


 Découper (split) les données d'entrée en plusieurs fragments.
 Mapper (Map) chacun de ces fragments pour obtenir des couples (clef ;
valeur).
 Grouper (shuffle) ces couples (clef ; valeur) par clef.
 Réduire (reduce) les groupes indexés par clef en une forme finale, avec
une valeur pour chacune des clefs distinctes.

28
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Exemple: Comptage de mots
 Fichiers d’entrée textuels,
 On veut connaître le nombre d’occurrences de chacun des
mots dans ces fichiers

 Fichier d’entrée :

 Pour simplifier, on retire tout symbole de ponctuation et


caractères spéciaux. On passe l’intégralité du texte en
minuscules.

29
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Exemple: Comptage de mots

 Découpage (splitting) des données d’entrée en splits:


Par exemple par ligne:

 Ici, 4 unités (Splits) de traitement après découpage

30
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Exemple: Comptage de mots

 Mapper (Mapping) du programme WordCount :

Mappers

1.function map(LongWritable inKey1, String inValue1)


2. foreach word w in inValue1:
3. write(w, 1)

31
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Exemple: Comptage de mots

Résultat de l’Opération map :


 Séparation de l’unité en mots (selon les espaces)

 Emission d’une paire <mot,1> pour chaque mot

32
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Exemple: Comptage de mots

Regroupement (ou shuffling) des clés communes:

 Effectué par un tri distribué,

 Pris en charge de manière automatique par Hadoop.

33
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Exemple: Comptage de mots
Reducer (Reducing) du programme WordCount :

Reducers

1.function reduce(Text inKey2, Iterator<intWritable> inValue2)


2. set wordCount = 0
3. foreach v in inValue2:
4. wordCount = wordCount + v
5. write(inKey2, wordCount)

34
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Exemple: Comptage de mots
Opération Reduce :
• Sommation des valeurs de toutes les paires de clé commune
• Ecriture dans un (ou des) fichier(s) résultats
• Le fichier en sortie de reducer sera donc le suivant :

35
CH2 Architectures Big Data usuelles

ARCHITECTURE
MAP / REDUCE :
Exemple: Comptage de mots

36
Faculté des Sciences et Techniques de Tanger
Département Génie Informatique

Atelier : Map Reduce


L’Ingénierie ontologique et les techniques d’Intelligence Artificielle pour la modélisation d’un système e-
Learning adaptatif orienté compétences

LSI– 2020/2021
CH2 Architectures Big Data usuelles

Atelier Map Reduce

MAP / REDUCE :

Lancer Oracle VM VirtualBox , puis lancer la plate forme Cloudera

38
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Exemple d’application MAP / REDUCE :

• Ecrire une application WordCount qui permet de compter le nombre


d'occurrences de chaque mot dans un ensemble d'entrée donné.

• Cela fonctionne après une installation Hadoop , avec la composante


MapReduce.

• Map Reduce fonctionne exclusivement avec les paires <key, value>, c'est-à-
dire que le framework visualise l'entrée du job comme un ensemble de paires
<clé, valeur> et produit un ensemble de paires <clé, valeur> comme sortie du
travail, différents types.

• Types d'entrée et de sortie d'un travail MapReduce:


•(entrée) <k1, v1> -> map -> <k2, v2> -> combiner -> <k2, v2> -> réduire ->
<k3, v3> (sortie)

39
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Lancer Eclipse, et créer un nouveau projet WordCount

40
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Ajouter des librairies externes a partir du chemin File System/usr/lib/hadoop

41
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Ajouter des librairies externes a partir du chemin File System/usr/lib/hadoop

42
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Ajouter d’autres librairies externes à partir du chemin

File System/usr/lib/hadoop/client

43
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Dans le projet WordCount , Créer une classe WordCount.java et importer


les librairies Hadoop MapReduce

import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordCount {

//////
}

44
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Dans la classe WordCount , ajouter une classe statique TokenizerMapper

public class WordCount {

public static 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, Context context


) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
}
45
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Dans la classe WordCount , ajouter une classe statique IntSumReducer

public class WordCount {

public static 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) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
}
46
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Dans la classe WordCount , Faire appel aux Mapper, Combiner , et Reducers

public class WordCount {

public static void main(String[] args) throws Exception {


Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}

47
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Exporter le projet sous forme d’un fichier WordCount.jar

48
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Exporter le projet sous forme d’un fichier WordCount.jar dans le répertoire


Cloudera

49
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Exporter le projet sous forme d’un fichier WordCount.jar dans


le répertoire Cloudera

50
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Le fichier WordCount à été bien généré ; on peut l’exploiter a partir du Shell

Créer le fichier Processfile1.txt et éditer des mots

51
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Visualiser le contenu de fichier Processfile1.txt

52
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Importer le fichier Processfile.txt dans le répertoire /inputfolder1 sur le HDFS ,


puis visialiser le contenu de fichier dans le HDFS

53
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Importer le fichier Processfile.txt dans le répertoire /inputfolder1 sur le HDFS ,


puis visualiser le contenu de fichier dans le HDFS

54
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Lancer le fichier WordCount.jar passant deux paramètres


/inputfolder1/Processfile1.txt et /out1
pour sauvegarder le résultat de traitement MapReduce

55
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Lancer le fichier WordCount.jar passant deux paramètres


/inputfolder1/Processfile1.txt et /out1
pour sauvegarder le résultat de traitement MapReduce

56
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Lancer le fichier WordCount.jar passant deux paramètres


/inputfolder1/Processfile1.txt et /out1
pour sauvegarder le résultat de traitement MapReduce

57
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Consulter le résultat de traitement dans le répertoire /out1 ;


le traitement a bien déroulé

Ou bien sur le lien http://localhost:50070/explorer.html#/

58
CH2 Architectures Big Data usuelles

Atelier Map Reduce

Si on visualise le contenu de part-r-0000 , on trouve le résultat de calcul


des mots efféctué par le Job Mapreduce dans le HDFS

Référence :
https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-
mapreduce-client-core/MapReduceTutorial.html

59

Vous aimerez peut-être aussi