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)
[Link],
• 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
[Link] 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
[Link] 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 [Link] et importer
les librairies Hadoop MapReduce
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
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([Link]());
while ([Link]()) {
[Link]([Link]());
[Link](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 += [Link]();
}
[Link](sum);
[Link](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 = [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);
}
}
47
CH2 Architectures Big Data usuelles
Atelier Map Reduce
Exporter le projet sous forme d’un fichier [Link]
48
CH2 Architectures Big Data usuelles
Atelier Map Reduce
Exporter le projet sous forme d’un fichier [Link] dans le répertoire
Cloudera
49
CH2 Architectures Big Data usuelles
Atelier Map Reduce
Exporter le projet sous forme d’un fichier [Link] 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 [Link] et éditer des mots
51
CH2 Architectures Big Data usuelles
Atelier Map Reduce
Visualiser le contenu de fichier [Link]
52
CH2 Architectures Big Data usuelles
Atelier Map Reduce
Importer le fichier [Link] 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 [Link] 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 [Link] passant deux paramètres
/inputfolder1/[Link] et /out1
pour sauvegarder le résultat de traitement MapReduce
55
CH2 Architectures Big Data usuelles
Atelier Map Reduce
Lancer le fichier [Link] passant deux paramètres
/inputfolder1/[Link] et /out1
pour sauvegarder le résultat de traitement MapReduce
56
CH2 Architectures Big Data usuelles
Atelier Map Reduce
Lancer le fichier [Link] passant deux paramètres
/inputfolder1/[Link] 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 [Link]
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 :
[Link]
mapreduce-client-core/[Link]
59