0% ont trouvé ce document utile (0 vote)
85 vues33 pages

Architecture HDFS et MapReduce

Transféré par

rahma.azzabi
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)
85 vues33 pages

Architecture HDFS et MapReduce

Transféré par

rahma.azzabi
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

HDFS (Hadoop Distributed File System)

HDFS = un seul arbre pour les réunir tous


 HDFS permet de voir tous les dossiers et fichiers des milliers de machines du
cluster comme un seul arbre, contenant des Po de données.
 Ecrit en java
 Stockage d’une grande quantité de données sur un grand nombre de machines
(nodes)
Cluster= node+ node +…+ node
Node = CPU + plusieurs disques
Un fichier [Link] sous HDFS est composé de blocs
Chaque bloc possède un nom unique; blk_1, blk_2, etc.

[Link]@[Link] 62
HDFS (Hadoop Distributed File System)
Un fichier sous HDFS est composé de blocs
Chaque bloc possède un nom unique; blk_1, blk_2, etc (128 Mo ).

[Link]@[Link] 63
HDFS (Hadoop Distributed File System)
Architecture

[Link]@[Link] 64
HDFS (Hadoop Distributed File System)
Architecture
Concept de Rack Awareness (rack=baie de stockage)

[Link]@[Link] 65
HDFS (Hadoop Distributed File System)
Architecture
Les datanodes contiennent des blocs (notés A,B,C. . . ). Les mêmes blocs sont dupliqués
(replication) sur différents datanodes, en général 3 fois.
 fiabilité des données en cas de panne d’un datanode,
 accès parallèle par différents processus aux mêmes données.
Le namenode sait à la fois :
 sur quels blocs sont contenus les fichiers,
 sur quels datanodes se trouvent les blocs voulus.
 On parle de metadata (FsImage ― Edits Log)
Inconvénient majeur : panne du namenode = mort de HDFS
Solution: un secondary namenode archive les metadata.

[Link]@[Link] 66
HDFS (Hadoop Distributed File System)
Un cluster HDFS est constitué de machines jouant différents rôles exclusifs entre
eux :
• L’une des machines est le maître HDFS, appelé le namenode. Cette machine
contient tous les noms et emplacement des fichiers, comme un gros annuaire
téléphonique.
• Une autre machine est le secondary namenode, une sorte de namenode de
secours, qui enregistre des sauvegardes de l’annuaire à intervalles réguliers.
• Certaines machines sont des clients. Ce sont des points d’accès au cluster pour
s’y connecter et travailler.
• Toutes les autres machines sont des datanodes. Elles stockent le contenu des
fichiers sous forme de blocs. Selon la taille d’un fichier, il lui faudra un certain
nombre de blocs.

[Link]@[Link] 67
[Link]@[Link] 68
HDFS (Hadoop Distributed File System)
Mode high availability
Comme le namenode est absolument vital pour HDFS mais unique, Hadoop version 2
propose une configuration appelée high availability dans laquelle il y a 2 autres
namenodes en secours, capables de prendre le relais instantanément en cas de panne
du namenode initial.

Les namenodes de secours se comportent comme des clones. Ils sont en état d’attente
et mis à jour en permanence à l’aide de services appelés JournalNodes.

Les namenodes de secours font également le même travail que le secondary


namenode, d’archiver régulièrement l’état des fichiers, donc ils rendent ce dernier inutile.

[Link]@[Link] 69
HDFS (Hadoop Distributed File System)
Mode high availability

[Link]@[Link] 70
Map Reduce
MapReduce est un patron ou modèle d’architecture de
développement informatique, dans lequel sont effectués des calculs
parallèles et souvent distribués sur des données volumineuses.
MapReduce est un environnement Java pour écrire des programmes.
Il est possible d’utiliser d’autres langages comme Python et Ruby
(Hadoop Streaming).
Principe: selon le modèle MapReduce, Hadoop transfère le code à
chaque nœud et chaque nœud traite les données dont il dispose.
Cela permet de traiter un volume important de données plus
rapidement et plus efficacement.

[Link]@[Link] 71
Map Reduce
Objectif: permet de manipuler de grandes quantités de données en les
distribuant dans un cluster de machines pour être traitées.
Exemples d’application: Amazon, Facebook et Cloud Computing.
Il repose sur deux fonctions : « Map » et « Reduce ».
Map: fonction exécutée par un nœud spécifique, analyse un problème, le
découpe en sous-problèmes,
Reduce: fonction qui délègue la résolution de ces sous-problèmes à
d’autres nœuds de traitements pour être traités en parallèle.
 Ces nœuds font ensuite remonter leurs résultats au nœud qui les
avait sollicités.

[Link]@[Link] 72
Map Reduce
Exemple:
Soient les 4 n-uplets fictifs suivants :

Calculer le prix maximal, moyen ou total peut s’écrire à l’aide d’algorithmes de


type :
pour chaque n-uplet, faire :
valeur = FonctionM(n-uplet courant)
retourner FonctionR(valeurs rencontrées)

[Link]@[Link] 73
Map Reduce
Exemple:
• FonctionM est une fonction de correspondance : elle calcule une valeur qui nous intéresse à
partir d’un n-uplet,
• FonctionR est une fonction de regroupement (agrégation) : maximum, somme, nombre,
moyenne, . . .
 Par exemple, FonctionM extrait le prix d’une voiture, FonctionR calcule le max d’un
ensemble de valeurs :
pour chaque voiture, faire :
prix = getPrix(voiture courante)
retourner max(prix rencontrés)

[Link]@[Link] 74
Map Reduce
Exemple en Python :

[Link]@[Link] 75
Map Reduce
 map(fonction, liste) : applique la fonction à chaque élément de la liste. Elle effectue la boucle
«pour» de l’algorithme précédent et retourne la liste des prix des voitures.

 max(liste) : retourne le plus grand élément de la liste fournie. C’est une fonction de type
«reduce».

Ces deux fonctions constituent un couple « map-reduce ».

 La possibilité de paralléliser ces fonctions afin de calculer beaucoup plus vite sur une
machine ayant plusieurs cœurs ou sur un ensemble de machines reliées entre elles.

[Link]@[Link] 76
Map Reduce

[Link]@[Link] 77
Map Reduce
Parallélisation de Map
La fonction map est par nature parallélisable, car les calculs sont indépendants.
Exemple, pour 4 éléments à traiter :
• valeur1 = FonctionM(element1)
• valeur2 = FonctionM(element2)
• valeur3 = FonctionM(element3)
• valeur4 = FonctionM(element4)
Les quatre calculs peuvent se faire simultanément, par exemple sur 4 machines différentes.
Remarque : il faut que la fonction mappée soit une pure fonction de son paramètre, qu’elle n’ait pas
d’effet de bord tels que modifier une variable globale ou mémoriser ses valeurs précédentes.

[Link]@[Link] 78
Map Reduce
Parallélisation de Reduce
La fonction reduce se parallélise partiellement, sous une forme hiérarchique, par exemple :
• inter1 et 2 = FonctionR(valeur1, valeur2)
• inter3 et 4 = FonctionR(valeur3, valeur4)
• resultat = FonctionR(inter1 et 2, inter3 et 4)
Seuls les deux premiers calculs peuvent être faits simultanément. Le 3e doit attendre. S’il y avait
davantage de valeurs, on procéderait ainsi :
1. calcul parallèle de la FonctionR sur toutes les paires de valeurs issues du map
2. calcul parallèle de la FonctionR sur toutes les paires de valeurs intermédiaires issues de la phase
précédente.
3. et ainsi de suite, jusqu’à ce qu’il ne reste qu’une seule valeur.

[Link]@[Link] 79
Map Reduce V1 (MRv1)
Terminologie
Mapper - mappe les paires clé / valeur en entrée sur un ensemble de paires clé / valeur
intermédiaires.
Reducer - réduit un ensemble de valeurs intermédiaires partageant une clé à un ensemble de valeurs
plus petit.
Job - Une exécution du programme MapReduce sur un ensemble de données.
Task - Exécution d'un Mapper ou d'un Reducer sur une tranche de données.
JobTracker - Planifie les travaux et suit les travaux assignés au TaskTracker.
TaskTracker - Suit la tâche et signale l’état à JobTracker.
MasterNode - Nœud où JobTracker est exécuté et qui accepte les demandes de travail des clients.
SlaveNode - Nœud où le programme Map et Reduce est exécuté.

[Link]@[Link] 80
Map Reduce V1 (MRv1)
Composants
JobTracker: divise le travail sur les Mappers et Reducers, s’exécutant sur
les différents nœuds
TaskTracker:
 s’exécute sur chacun des nœuds pour appliquer les vraies tâches de
MapReduce.
Choisit en général de traiter (Map ou Reduce) un bloc sur la même machine que
lui
S’il est déjà occupé, la tâche revient à un autre tracker qui utilisera le réseau
(rare)

[Link]@[Link] 81
Map Reduce V1 (MRv1)
Fonctionnement:
 Un job Map Reduce (ou une application MR) est divisé sur plusieurs tâches appelées mappers
et reducers
 Chaque tâche est exécutée sur un nœud du cluster
 Chaque nœud a un certain nombre de slots prédéfinis: Map Slots et Reduce Slots
 Un slot est une unité d’exécution qui représente la capacité du taskTracker à exécuter une
tâche (map ou reduce) individuellement à un moment donné
 Le jobTracker se charge de:
Allouer les ressources (mémoire, CPU,…) aux différentes tâches
Coordonner l’exécution des jobs MapReduce
Réserver et ordonner les slots, et de gérer les fautes en réallouant les slots au besoin

[Link]@[Link] 82
Map Reduce V1 (MRv1)
Paires clé-valeurs :
Les données échangées entre Map et Reduce, et plus encore, dans la totalité du job sont des
paires (clé, valeur) :
• une clé : c’est n’importe quel type de données : entier, texte. . .
• une valeur : c’est n’importe quel type de données
Exemple :
• un fichier texte est un ensemble de (n° de ligne, ligne).
• un fichier météo est un ensemble de (date et heure, température)

[Link]@[Link] 83
[Link]@[Link] 84
Map Reduce V1 (MRv1)
Étapes d’un job MapReduce
Un job MapReduce comprend plusieurs phases :
1. Prétraitement des données d’entrée, ex: décompression des fichiers
2. Split: séparation des données en blocs traitables séparément et mise sous
forme de (clé, valeur), ex: en lignes ou en n-uplets
3. Map: application de la fonction map sur toutes les paires (clé, valeur) formées
à partir des données d’entrée, cela produit d’autres paires (clé, valeur) en sortie
4. Shuffle & Sort: redistribution des données afin que les paires produites par
Map ayant les mêmes clés soient sur les mêmes machines,
5. Reduce: agrégation des paires ayant la même clé pour obtenir le résultat final.

[Link]@[Link] 85
Map Reduce V1 (MRv1) 1
2

1- lancement d’un programme MR 4


2- JC envoie un message au JT. Le JT produit un identifiant
unique pour le travail (job)
3 5 6 8
3- JC copie les ressources du job (telles que les fichiers jar) vers
un espace de stockage partagé (shared FS).
4- Une fois les ressources du job sont copiées, le JC demande
au JT de démarrer le travail. Le JT initialise le job.
5- Le JT récupère les données d'entrée (input splits) à partir du 7
DFS après avoir communiqué le NameNode
6- Le JT soumet le travail (Map ou Reduce) aux nœuds
TaskTracker choisis.
7- Le TT obtient le code à exécuter à partir du fichier partagé
8- Le TT envoie des signaux (heart beats) pour informer le JT de
la progression des tâches qui lui sont assignées.

[Link]@[Link] 86
Map Reduce V1 (MRv1)
Limites
Le JobTracker coordonne tous les jobs du cluster. Pour chaque travail, il assigne les
tâches Map et Reduce à TaskTarcker.
Gestion centralisée du flux de travaux (job workflow): problème d'évolutivité
(scalability).
Dans MR v1, le nombre de slots de map et de reduce est défini. Ainsi, un nœud ne
peut exécuter plus de tâches de map que de slots de map à un moment donné.
Les ressources de cluster pour le calcul ne sont pas utilisées avec une efficacité
optimale: problème d'utilisation des ressources.
Il est nécessaire de prendre en charge les paradigmes de programmation autres
que MapReduce: aucune prise en charge de charges de travail différentes de
MapReduce (tels que le traitement graphique)
[Link]@[Link] 87
YARN… MRv2
MRv2 sépare la gestion des ressources de celle
des tâches MR
Pas de slots (les ressources pour les nœuds
sont allouées aux applications à la demande )
La majorité des fonctionnalités du JobTracker
sont accordées à Application Masters
Un cluster peut avoir plusieurs Application
Masters
Supporter les applications MR et non-MR

[Link]@[Link] 88
YARN… MRv2
Apache YARN (Yet Another Resource Negotiator), est une solution de
gestion du resource du cluster dans Hadoop 2
Améliore l’implémentation MR et supporte autres modèles informatiques
distributés
Deux fonctions de MR JobTracker sont divisées en deux modèles :
◦ Resource Management
◦ Job scheduling/monitoring

[Link]@[Link] 89
YARN… MRv2

[Link]@[Link] 90
[Link]@[Link] Source: [Link] 91
YARN… MRv2

[Link]@[Link] 92
YARN… MRv2

[Link]@[Link] 93
YARN… MRv2

[Link]@[Link] 94

Vous aimerez peut-être aussi