3. Plan du chapitre
Présentation et Historique de Hadoop
HDFS
MAP-REDUCE
Architecture Hadoop
YARNYARN
Hadoop2
Mouna TORJMEN KHEMAKHEM
4. Projet open source d’Apache: http://hadoop.apache.org/
Système de fichiers distribué et scalable (HDFS)
Traitement distribué sur plusieurs nœuds
Ecrit en Java, portable
Conçu par Doug Cutting en 2004
Hadoop: Présentation (1/2)
Conçu par Doug Cutting en 2004
4444
Mouna TORJMEN KHEMAKHEM
5. Utilisation simple pour les développeurs:
développer seulement des tâches Map-Reduce
utilisation des interfaces simples à travers des librairies
langages multiples (Java, Python, C/C++...).
Hadoop: Présentation (2/2)
S‘occupe de toutes les problématiques liées au calcul distribué:
accès et partage des données
tolérance aux pannes
répartition des tâches aux différents nœuds du cluster
le développeur s’occupe seulement de la tâche Map-
Reduce.
5555
Mouna TORJMEN KHEMAKHEM
6. Hadoop : Historique (1/2)
2002: Doug Cutting (directeur archive.org) et Mike Cafarella
(étudiant) développent Nutch, un moteur de recherche Open Source
exploitant le calcul distribué.
L'implémentation peut tourner seulement sur quelques machines et a
plusieurs problèmes liés à l'accés et le partage de fichiers.
2003/2004: le département de recherche de Google publie deux2003/2004: le département de recherche de Google publie deux
whitepapers: (1) sur GFS (un système de fichier distribué) et (2) sur
le paradigme Map/Reduce pour le calcul distribué.
2004: Doug Cutting et Mike Cafarella développent un framework
inspiré des papiers de Google et portent leur projet Nutch sur ce
framework.
6666
Mouna TORJMEN KHEMAKHEM
7. Hadoop : Historique (2/2)
2006: Doug Cutting (de Yahoo) travaille sur une
amélioration de l’indexation du moteur de recherche de
Yahoo et créé une nouvelle version en tant que projet Open
Source de la fondation Apache. Ce projet est appelé
Hadoop : le nom d'un éléphant en peluche de son fils.
Un cluster peut comporter de 5 à 20 machines.
2008: Hadoop est utilisé par le moteur de recherche de
Yahoo et par d’autres départements de l'entreprise.
2011: Hadoop est utilisé par
plusieurs entreprises et universités dans le monde
Le cluster Yahoo comporte
42.000 machines.7777
Mouna TORJMEN KHEMAKHEM
8. Hadoop est composé de deux grandes parties :
Hadoop Distibuted File System – HDFS : destiné pour le
stockage distribué des données
Hadoop: Composants fondamentaux
Distributed Programing Framework - MapReduce : destiné
pour le traitement distribué des données.
Stockage Traitement
8888
Mouna TORJMEN KHEMAKHEM
9. • un système de fichiers distribué
• inspiré de GFS
• écrit en Java.
• tolérant aux pannes
• SGF du type Write Once Read Many (WORM) : on y
HDFS (Hadoop Distributed File System)
• SGF du type Write Once Read Many (WORM) : on y
écrit une fois le fichier, puis on y accède plusieurs fois.
• HDFS se base sur le principe de Maître/Esclave
9999
Mouna TORJMEN KHEMAKHEM
11. Taille de blocs:
En système de fichier classique: 4 Ko
en HDFS:
64 Mo: par défaut
Fonctionnement du HDFS
64 Mo: par défaut
Possibilité de configuration en : 128 Mo, 256
Mo, 512 Mo ou 1 Go.
Réduire le temps d'accès à un bloc
11111111
Mouna TORJMEN KHEMAKHEM
13. • Duplication
En phase d'écriture, chaque bloc
correspondant au fichier est répliqué sur
des nœuds distincts du cluster.
En phase de lecture, si un bloc est
Fonctionnement du HDFS
En phase de lecture, si un bloc est
indisponible sur un nœud, des copies de
ce bloc seront disponibles sur d'autres
nœuds.
L’utilisateur peut facilement configurer
le nombre de réplication (par défaut 3).
13131313
Mouna TORJMEN KHEMAKHEM
14. NameNode: nœud maître
gère l'espace de noms, l'arborescence du système de fichiers et
les métadonnées des fichiers et des répertoires.
Il centralise la localisation des blocs de données répartis dans
le cluster.
Fonctionnement du HDFS
le cluster.
Il connait les DataNodes dans lesquels les blocs sont stockés
Les différents types de métadonnées :
liste des fichiers
liste des blocs pour chaque fichier
liste des DataNodes pour chaque bloc
Attributs de fichiers, dernier accès, nombre de réplication.
14141414
Mouna TORJMEN KHEMAKHEM
15. Secondary NameNode
Le NameNode est un point unique de défaillance (Single
Point of Failure): en cas de panne, perte des blocs d’un
fichier donné.
le NameNode secondaire vérifie périodiquement l’état du
Fonctionnement du HDFS
le NameNode secondaire vérifie périodiquement l’état du
NameNode principal et fait une copie des métadonnées
En cas de panne du NameNode principal, le NameNode
secondaire la remplace.
15151515
Mouna TORJMEN KHEMAKHEM
16. DataNode : nœud esclave
enregistre (écriture) et récupère (lecture) les blocs de
données.
En lecture, les DateNodes transmettent au client les blocs
correspondant au fichier grâce au NameNode.
Fonctionnement du HDFS
correspondant au fichier grâce au NameNode.
En écriture, les DataNodes retournent l’emplacement des
blocs créés au NameNode.
Chaque DataNode envoie périodiquement
au NameNode la liste des blocs de données qu'il contient.
16161616
Mouna TORJMEN KHEMAKHEM
19. Créer un dossier dans HDFS :
Commande : hadoop fs -mkdir
Exemple : hadoop fs -mkdir /user/monDossier
Lister le contenu d’un dossier dans HDFS:
Commande : hadoop fs –ls
Exemple : hadoop fs -ls /user/monDossier
Charger un ou plusieurs fichiers du local à HDFS:
Commande : hadoop fs -put
Quelques commande en HDFS
Commande : hadoop fs -put
Exemple : hadoop fs -put /home/monFichier.txt /user/monDossier
Exporter un ou plusieurs fichiers de HDFS au local:
Commande: hadoop fs -get
Exemple : hadoop fs -get /user/monDossier/monFichier.txt /home
Supprimer un fichier dans HDFS:
Commande : hadoop fs -rm
Exemple : hadoop fs -rm /user/monFichier.txt
D'autres commandes usuelles: -ls, -cp, -rmr, -du, etc...
19191919
Mouna TORJMEN KHEMAKHEM
20. MapReduce
MapReduce :
un modèle de programmation dédié pour la
lecture, le traitement et l’écriture de grandes
volumes de données.volumes de données.
garantit les fonctionnalités suivantes :
Parallélisation automatique des programmes à
exécuter
Gestion transparente du mode distribué.
Tolérance aux pannes.
20202020
Mouna TORJMEN KHEMAKHEM
21. Basé sur deux fonctions :
map() : applique une fonction donnée sur
chaque éléments d’une liste et retourne une
liste.
MapReduce
Exemple: (mapcar #’round ‘(1.3 2.7 3.4 4.5)) => (1 3 3 4)
reduce(): applique une fonction donnée à tous
les éléments d’une liste et retourne une liste
unique.
Exemple: (reduce #’+ ‘(1 2 3 4)) => 10
21212121
Mouna TORJMEN KHEMAKHEM
22. •Le processus MapReduce est composé de 4 étapes:
– Fragmenter (split) les données en entrée en n partitions.
– Mapper chacun de ces partitions couples (clé , valeur).
– Grouper (shuffle) ces couples (clé , valeur) par clé.
– Réduire (reduce) les groupes indexés par clef à une unique
MapReduce
MounaTORJMEN KHEMAKHEM &Amal
ABID
– Réduire (reduce) les groupes indexés par clef à une unique
paire (clé, valeur).
22222222
Mouna TORJMEN KHEMAKHEM
23. •Résolution d’un problème avec MapReduce:
ProgrammeurProgrammeur
-Choix de la méthode de découpage des
données
-Définition de la clé à utiliser
-Développement de l’opération MAP
-Développement de l’opération REDUCE
MapReduce
HadoopHadoop
-Développement de l’opération REDUCE
-repartition de données
-distribution de calcul
-groupement par clé
…
23232323
Mouna TORJMEN KHEMAKHEM
24. • But: compter le nombre d’occurrences de chaque mot dans un
fichier texte.
• Données: un fichier texte sous la forme suivante:
Celui qui croyait
MapReduce-Exemple 1
• MAP/REDUCE: (clef, valeur)= (mot, 1)
Celui qui croyait
Ciel ciel croyait
Celui ciel qui
24242424
Mouna TORJMEN KHEMAKHEM
25. MapReduce-Exemple 1
MAP REDUCE
POUR MOT dans LIGNE, FAIRE :
GENERER COUPLE (MOT; 1)
TOTAL=0
RENVOYERTOTAL
TOTAL=0
POUR COUPLE dans GROUPE,
FAIRE:
TOTAL=TOTAL+1
RENVOYERTOTAL
25252525
Mouna TORJMEN KHEMAKHEM
26. • But: compter le nombre de visiteurs sur chacune des pages d'un
site Internet.
• Données: des fichiers de logs sous la forme suivante:
/index.html [19/Oct/2013:18:45:03 +0200]
/contact.html [19/Oct/2013:18:46:15 +0200]
MapReduce-Exemple 2
• MAP/REDUCE: (clef, valeur)= (URL, 1)
/contact.html [19/Oct/2013:18:46:15 +0200]
/news.php?id=5 [24/Oct/2013:18:13:02 +0200]
/news.php?id=4 [24/Oct/2013:18:13:12 +0200]
/news.php?id=18 [24/Oct/2013:18:14:31 +0200]
...etc...
26262626
Mouna TORJMEN KHEMAKHEM
27. • But: calculer le total des ventes par magasin (ville) pour
l’année courante
• Données: des fichiers sous la forme (jour ville produit prix):
01-01-2017 Sfax meuble 200
01-01-2017Tunis vetement 50
02-01-2017 Sfax jouet 20
MapReduce-Exemple 3
• MAP/REDUCE: (clef, valeur)= (magasin, prix)
02-01-2017 Sfax jouet 20
02-01-2017 Sousse vetement 80
02-01-2017Tunis jouet 50
27272727
Mouna TORJMEN KHEMAKHEM
28. Architecture de Hadoop
•Hadoop est basé sur deux serveurs (des daemons):
– Le JobTracker:
• Coordinateur des taches MapReduce sur le cluster : distribution des
opérations Map ou Reduce au TaskTracker.
• En communication avec le NameNode
Un seul JobTracker par cluster point unique de défaillance (Single Point
of Failure).of Failure).
– Le TaskTracker:
• Exécute les taches (Map ou Reduce)
• Envoie des notification au JobTracker (erreur, …)
• Communique avec un DataNode
Un TaskTracker sur chaque machine esclave du cluster.
28282828
Mouna TORJMEN KHEMAKHEM
29. Chaque TaskTracker signale son statut
continuellement par le biais de «
heartbeat ».
En cas de défaillance d'un TaskTracker
Architecture de Hadoop
En cas de défaillance d'un TaskTracker
(heartbeat manquant / tâche échouée),
le JobTracker redistribue la tâche à un
autre nœud.
29292929
Mouna TORJMEN KHEMAKHEM
30. JobTrackerJobTracker
Architecture de Hadoop
Name NodeName Node
Couche MapReduce
Couche HDFS
Task
Tracker
Task
Tracker
Data NodeData Node
Task
Tracker
Task
Tracker
Data NodeData Node
Couche MapReduce
Couche HDFS
30303030
Mouna TORJMEN KHEMAKHEM
32. Evolution de MapReduce:YARN
• YARN (Yet-Another-Resource-Negotiator) :
– Séparation entre la gestion des ressources et la gestion des
tâches Map/Reduce
–Allocation des ressources (CPU, mémoire, …) aux
applications s’exécutant sur les nœuds à la demande.applications s’exécutant sur les nœuds à la demande.
32323232
Mouna TORJMEN KHEMAKHEM
33. Ressource Manager (RM)
-s’exécute sur le nœud master
-ordonnanceur de ressources
-s’occupe de gestion de ressources entre plusieurs applications
Application Master (AM)
-un seul AM par application
Architecture de YARN
JobTracker
RessourceManager
ApplicationMaster AM AM
-un seul AM par application
-s’exécute sur un container
Container
-créé par le Resource Manager à la demande
-s’occupe de l’allocation de ressources sur le noud esclave
33333333
Mouna TORJMEN KHEMAKHEM
34. Le NodeManager (NM)
• S’exécute sur un noeud esclave
• En communication avec le Ressource Manager
Architecture de YARN
RessourceManager
ApplicationMasterAM AM NodeManager NM NM
34343434
Mouna TORJMEN KHEMAKHEM
36. Evolution de HDFS : HDFS 2
1. Le SPOF du Namenode a disparu
• Dans Hadoop 1: un seul namenode un SPOF (Single Point Of Failure).
• Dans Hadoop 2: deux namenodes Si le Namenode principal tombe en panne, le
Namenode secondaire le remplace.
2. La fédération HDFS
Un namenode correspond à un espace de nommage (namespace).
• Dans Hadoop1: un seul namenode par cluster.
• Dans Hadoop2: plusieurs namenodes et donc plusieurs namespace sur un même
cluster.
36363636
Mouna TORJMEN KHEMAKHEM
39. Erasure coding pour plus de résilience
Intégration du technique erasure coding à HDFS pour améliorer la
récupération et la fiabilité des données
UnYARN renforcé et plus étendu
amélioration des capacités de scalabilité
des applications distribuées sur plusieurs milliers de nœuds d’un
Evolution de Hadoop: Hadoop 3
des applications distribuées sur plusieurs milliers de nœuds d’un
cluster
39393939
Mouna TORJMEN KHEMAKHEM