Académique Documents
Professionnel Documents
Culture Documents
CHAPITRE 2 : FONDEMENTS DE
L’ENVIRONNEMENT HADOOP
M1 - SII (2023-2024)
L’écosystème Hadoop
HDFS : Hadoop Distributed File system
- Stockage distribué des fichiers
Hadoop MapReduce
- Ecriture d’application traitant une grande quantité
de données structurées et non structurées stockées
dans HDFS
2
Rappel : Les Systèmes de fichiers
Exemples : FAT 16, FAT 32, NTFS, Ext, Ext3, Ext4, Swap, JFS…
3
HDFS : Le système de gestion distribué des fichiers Hadoop
Architecture de HDFS
4
HDFS : Le système de gestion distribué des fichiers Hadoop
Caractéristiques du HDFS
Notion de distribution
5
HDFS : Le système de gestion distribué des fichiers Hadoop
Caractéristiques du HDFS
Notion de blocs de données
- HDFS divise les fichiers volumineux en petits morceaux (par défaut de 128 Mo), appelés Blocs de
données, au lieu de traiter un fichier dans son ensemble.
- Ces blocs HDFS constituent la plus petite unité de données d’un système de fichiers.
Les tailles des blocs peuvent être de 64 Mo, 128 Mo, 256 Mo ou 512 Mo.
6
HDFS : Le système de gestion distribué des fichiers Hadoop
Caractéristiques du HDFS
Notion de réplication
- HDFS crée des copies dupliquées de chaque bloc de données. Tous ces blocs sont répliqués et
stockés sur différents nœuds du cluster
7
HDFS : Le système de gestion distribué des fichiers Hadoop
Caractéristiques du HDFS
Notion de haute disponibilité
- Cette notion est prise en charge par HDFS grâce à la réplication de blocs de données et le stockage
sur plusieurs nœuds du cluster.
- Si un nœud tombe en panne, les données sont obtenues par le biais d’un nœud ou d’un chemin
différent.
8
HDFS : Le système de gestion distribué des fichiers Hadoop
Le système de fichier Hadoop FS
9
HDFS : Le système de gestion distribué des fichiers Hadoop
Lecture sur HDFS
NameNode FS image
Blocs :
EditLog
Fichiers : - A : DN1, DN2 - E : DN2, DN3
- B : DN1, DN3 - B : DN1, DN2
- /texte1.txt : A, B, C, D - C : DN2, DN3 - B : DN1
- /texte2.txt : E, F, G - D : DN1, DN3
A B G E C A B C
D F F D E
10
HDFS : Le système de gestion distribué des fichiers Hadoop
Ecriture sur HDFS
NameNode Blocs :
Fichiers : - A : DN1, DN2 - E : DN2, DN3
- B : DN1, DN3 - B : DN1, DN2
- /texte1.txt : A, B, C, D - C : DN2, DN3 - B : DN1
- /texte2.txt : E, F, G - D : DN1, DN3
A B G E C A B C
D F F D E
11
HDFS : Le système de gestion distribué des fichiers Hadoop
12
HDFS : Le système de gestion distribué des fichiers Hadoop
ELT et ETL
Extraction : C’est le processus d'extraction des données à partir de la source de données. Pour ETL, les
données vont dans une zone de transit temporaire tandis que pour ELT, les données vont dans un
système de stockage de Big de données.
Transform : C’est le processus de modification de la structure de l'information afin qu'elle puisse
s'intégrer au système de données cible et aux autres données du système.
Load : C’est le processus de dépôt de l'informations dans un système de stockage de données.
13
HDFS : Le système de gestion distribué des fichiers Hadoop
14
HDFS : Le système de gestion distribué des fichiers Hadoop
Les deamons d’Hadoop HDFS :
Le fonctionnement de HDFS est assuré par trois types de deamons :
• Le NameNode (NN), qui est un nœud maître (master node) et qui dispose d’une machine dédiée.
• Le SecondaryNameNode (SNN), qui est aussi un nœud maître et qui dispose donc, lui aussi, d’une machine
dédiée.
• Le DataNode (DN), qui est un nœud esclave (slave node) implanté sur chaque machine du cluster.
Remarque :
Les métadonnées sont stockées sur disque dur (fichier fsimage) et chargées dans la mémoire vive du NN lors
du démarrage du cluster. Puis, toutes le modifications apportées aux métadonnées sont stockées dans un fichier
(Edits). 15
HDFS : Le système de gestion distribué des fichiers Hadoop
Les deamons d’Hadoop HDFS :
Fonctions du DataNode (DN) :
16
Le paradigme MapReduce
Scinder les données initiales en plusieurs lots, chaque lot de données est
affecté à un serveur et le traitement est appliqué
17
Le paradigme MapReduce
Exemple du Word Count A, 1
A, 1
B, 1 A, 1
C, 1
A, B, C
B, 1
B, 1
A, B, C C, 1 B, 1 A, 2
C, A, C C, A, C A, 1
B,3
C, B, B C, 1
C, 4
C, 1
C, B, B C, 1
C, 1
C, 1
B, 1
C, 1
B, 1
C, 1
C, B, B C, 1
C, 1
C, 1
B, 1
C, 1
B, 1
C, 1
C, B, B C, 1
C, 1
C, 1
B, 1
C, 1
B, 1
Comme pour HDFS, la gestion des taches de MapReduce se base sur deux éléments
(deamons) :
Le JobTracker : Reçois la tâche à exécuter (un .jar en Java), ainsi que les données
d’entrées (nom des fichiers stockés sur HDFS) et le répertoire ou stocker les données
de sortie (toujours sur HDFS). Il y a un seul JobTracker sur une seule machine d’un
cluster Hadoop. Le JobTracker est en communication avec le NameNode et sait où
sont les données.
22
Exécution d’un job dans Hadoop MapReduce
23
Exécution d’un job dans Hadoop MapReduce
24
Problématiques de MapReduce
• Surcharge du Job Tracker en raison du nombre de tâches à traiter (Gestion des
ressources, ordonnancement et monitoring des tâches).
• Nombre de DataNodes et Task Tracker limité au sein du Cluster.
• Répartition non optimale des slots maps et reduce, en raison du nombre de slots
prédéfini (à l’avance) au sein de chaque Task Tracker.
• Problème de Single Point of Failure (redémarrage obligatoire à chaque indisponibilité
du Job Tracker)
25
YARN : Gestionnaire de cluster Hadoop
Présentation de Yarn
26
YARN : Gestionnaire de cluster Hadoop
Fonctionnement de Yarn
27
YARN : Gestionnaire de cluster Hadoop
Fonctionnement de Yarn
28
YARN : Gestionnaire de cluster Hadoop
MapReduce vs Yarn
29
MapReduce en Java
Classe Map (Exemple : WordCount)
public class WordCountMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {
public void map (LongWritable key, Text value, OutputCollector<Text, IntWritable> collector, Reporter reporter) throws IOException {
String line = value.toString();
StringTokenizer st = new StringTokenizer(line, " ");
while (st.hasMoreTokens()) {
word.set(st.nextToken());
collector.collect(word, one); }
} }
30
MapReduce en Java
Classe Reduce (Exemple : WordCount)
public class WordCountReducer extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce (Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> outputCollector,
Reporter reporter) throws IOException {
int sum = 0;
while (values.hasNext()) {
sum = sum + values.next().get();
}
outputCollector.collect(key, new IntWritable(sum));
}
}
31
MapReduce en Java
Interface Writable
Elle permet la sérialisation, c’est à dire l’écriture d’une structure de données sous
forme d’octets et l’opération inverse, la dé-sérialisation permet de reconstruire une
structure de données à partir d’octets.
32