Vous êtes sur la page 1sur 32

BIG DATA

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

Hadoop YARN (Yet Another Ressource Negotiator)


- Fournit la gestion des ressources
- Considéré comme Système d’exploitation
d’Hadoop, responsable de la gestion et de la
surveillance des jobs

2
Rappel : Les Systèmes de fichiers

Un système de fichier désigne l’organisation hiérarchiques au sein du système d’exploitation qui


se charge de gérer le stockage et la manipulation de fichiers et d’offrir les primitives pour
manipuler ces 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

- HDFS divise les données en petit morceaux.


- Il stock d’une façon distribué et parallèle ces données dans différents nœuds du cluster.
- Il offre un moyen de map et reduce pour traiter un sous ensemble de données volumineuses.

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

Le shell du système de fichiers (FS) comprend


diverses commandes de type shell qui interagissent
directement avec le système de fichiers distribué
Hadoop (HDFS) ainsi qu'avec d'autres systèmes de
fichiers pris en charge par Hadoop, tels que Local
FS, HFTP FS, S3 FS et autres.

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

DataNode 1 DataNode 2 DataNode 3

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

DataNode 1 DataNode 2 DataNode 3

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.

Fonctions du NameNode (NN) :


Dans un cluster Hadoop, le NameNode (NN) héberge des métadonnées HDFS qui servent à :
• La correspondance entre un fichier et les blocs le constituant.
• Localisation de ces blocs dans le cluster (correspondance entre Bloc et DN avec, par défaut, trois DN
• pour un bloc.
• Informations sur les propriétaires de fichiers et les autorisations.

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) :

• Les DataNodes (DN) stockent les blocs de données (données réelles).


• DN effectue la création, la réplication et la suppression des blocs conformément aux instructions du NN.
• Par défaut, toutes les 3 secondes, il envoie une pulsation à NN pour signaler l’intégrité du système HDFS.

16
Le paradigme MapReduce

MapReduce a pour objectif de distribuer et paralléliser le traitement, des données


volumineuses, sur les nœuds d’un cluster Hadoop.

Scinder les données initiales en plusieurs lots, chaque lot de données est
affecté à un serveur et le traitement est appliqué

Agréger les résultats des traitements de chaque serveur

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

SPLIT MAP SHUFFLE and SORT REDUCE


18
Le paradigme MapReduce
fonction map() A, 1
A, 1
B, 1 Contraintes
A, 1 :
C, 1 - Eviter les pertes de mémoire
A, B, C
- Stateless
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

SPLIT MAP SHUFFLE and SORT REDUCE


19
Le paradigme MapReduce
fonction reduce()
A, 1 A, 1
B, 1 A, 1
Contraintes : C, 1
A, B, C
- Eviter les pertes de mémoire B, 1
- Stateless C, 1
B, 1
A, B, C 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

SPLIT MAP SHUFFLE and SORT REDUCE


20
Jobs (deamons) d’Hadoop MapReduce

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.

Le TaskTracker : Communique constamment avec le JobTracker et reçois les


opérations simple à effectuer (Map/Reduce) ainsi que les blocs de données
correspondants (stockés sur HDFS). Le TaskTracker s’exécute au sein des machines
du cluster.
21
Exécution d’un job dans Hadoop MapReduce

1. Un client hadoop copie ses données sur


HDFS.

2. Le client soumet le travail à effectuer au


JobTracker sous la forme d'une archive.jar
et des noms des fichiers d'entrée et de
sortie(ou sauvegarder les résultats).

3. Le JobTracker demande au NameNode


où se trouvent les blocs correspondants aux
noms de fichiers donné par le client.

22
Exécution d’un job dans Hadoop MapReduce

4. Le job tracker détermine alors quels


sont les noeuds Task Tracker les plus
appropriés pour exécuter les traitements
(colocalisation ou proximité des noeuds).

5. Les task trackers envoient


régulièrement un message (heartbeat) au
job tracker pour l'informer de
l'avancement de la tâche et de leur nombre
de slots disponibles.

23
Exécution d’un job dans Hadoop MapReduce

6. Le job tracker envoie alors au task


tracker sélectionné et pour chaque bloc de
données, le travail à effectuer (Map,
Reduce ou Shuffle sous forme de
fichier.jar).

7. Exécution des tâches map et reduce

Quand toutes les opérations envoyées aux


task trackers sont confirmées comme étant
effectuées, la tâche est considérée comme
effectuée.

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> {

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


private Text word = new Text();

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.

La sérialisation est nécessaire pour échanger des données entre machines. On ne


peut pas simplement échanger les octets internes car les machines du cluster ne sont
pas obligatoirement toutes pareilles : nombre d’octets, ordre des octets. . .

Les types Text, IntWritable et LongWritable sont des implémentations de l’interface


Writable

32

Vous aimerez peut-être aussi