Académique Documents
Professionnel Documents
Culture Documents
Mahdia
Département: Technologies de
l’informatique
Chapitre 01 Chapitre 03
01 Introduction au
Big Data
03 Hadoop, HDFS
et Map-Reduce
Chapitre 02 Chapitre 04
Domaines
02 Les bases de
données NoSQL
04 d’application du
big data
0
2
Institut Supérieur des Etudes Technologiques de
Mahdia
Département: Technologies de
l’informatique
Chapitre 2: Hadoop,
HDFS & MapReduce
Chebbi_ikram@yahoo.fr
Chebbi Ikram
https://sites.google.com/site/chebbiikramiset
4
Présentation du Framework
Hadoop est un framework open source conçu pour réaliser d’une façon distribuée des traitements sur des
volumes de données massives, de l’ordre de plusieurs pétaoctets;
Hadoop est géré sous l’égide de la fondation Apache, il est écrit en03
Java;
Hadoop a été conçu par Doug Cutting en 2004 et été inspiré par les publications MapReduce, GoogleFS et
BigTable de Google
Modèle simple pour les développeurs: il suffit de développer des tâches MapReduce depuis des interfaces
02 dans des langages multiples (Java,
simples accessibles via des librairies 04 Python, C/C++…)
Déployable très facilement (paquets Linux préconfigurés), configuration très simple elle aussi.
05
5
Historique
Hadoop
03
02 04
05
6
6
Historique : le détail
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 de multiples problèmes.
Hadoop 2003-2004: le département de recherche de Google publie deux whitepapers, le premier sur GFS(un
système de fichiers distribué) et le second sur le paradigme Map/Reduce pour le calcul distribué
2004 : Doug Cutting and Mike Cafarella développent un framework (encore assez primitif) inspiré des
papiers de Google et portent leur projet Nutch sur ce framework
2006: Doug Cutting (Désormais chez Yahoo) est en charge d’améliorer 03
l’indexation du moteur de recherche de Yahoo. Il exploite le framework réalisé
précédemment.
Il créé une nouvelle version améliorée du framework en tant que projet Open
Source de la fondation Apache, qu’il nomme Hadoop (le nom d’un éléphant en
peluche de son fils );
A l’époque, Hadoop est encore largement 02 en développement: un cluster04
pouvait alors comporter au maximum 5 à 20 machines
05
7
7
Historique: le détail
2008: le développement est maintenant très abouti, et Hadoop est
exploité par le moteur de recherche de Yahoo ainsi que par de
nombreuses autres divisions de l’entreprise
2011: Hadoop est désormais utilisé par de nombreuses autres
Hadoop entreprises et des universités, et le cluster Yahoo comporte 42000
machines et des centaines de pétaoctets
2012 Jan: - Hadoop 1.0
2013 Mai:. 1,42 To/min sur 2 100 nœuds (YARN)
2013 Oct: Hadoop 2.0 03
2015: Hadoop se généralise notamment avec le buzz Big Data et Cloud
16 janvier 2019: dernière version Hadoop 3.2.0
02 04
05
8
8
Composants Fondamentaux
Le projet Hadoop consiste en deux grandes parties:
Stockage des données : HDFS (Hadoop Distributed File System)
Traitement des données : MapReduce / Yarn (Yet Another Resource
Negotiator)
Hadoop Principe :
- Diviser les données
- Les sauvegarder sur une collection de machines, appelées cluster
- Traiter les données directement là où elles sont stockées, plutôt que
03
de les copier à partir d’un serveur distribué
05
9
9
Ecosystème Hadoop
MapReduce utilise des langages de programmation pour traiter les
Données: Java, Ruby, Python…
Plusieurs outils facilitant le travail
En plus des briques de base Yarn Map Reduce/HDFS, plusieurs outils
existent pour permettre:
Hadoop - L’extraction et le stockage des données de/sur HDFS
- La simplification des opérations de traitement sur ces données
- La gestion et coordination de la plateforme
- Le monitoring du cluster
03
04
05
10
10
Ecosystème Hadoop
HUE
Les jobs MapReduce peuvent prendre beaucoup de temps Oozie
pour s’exécuter sur de larges quantités de données
Mahout
Autres projets pour simplifier
Impala : PIG HIVE
Extraction des données directement
à partir de HDFS avec SQL Sqoop
Optimisé pour les requêtes à faible
Hadoop
Latence M-R Impala HBase Flume
Requêtes plus rapides que Hive
HBase : Base de données temps réél HDFS
Connexion du HDFS à partir d’outils Mahout :
externes Bibliothèque d’apprentissage automatique;
Sqoop : Prend les données à partir d’une Permet de :
base de données traditionnelle, et • Déterminer des éléments qu’un utilisateur pourra apprécier selon
les met dans HDFS, comme étant son comportement
des fichiers délimités, pour être • Grouper des documents
traitées avec d’autres données 04
• Affecter automatiquement des catégories aux documents
dans le cluster
Flume : Système distribué permettant de Hue :
collecter, regrouper et déplacer Front-end graphique pour le cluster
Fournit :
efficacement un ensemble de
- un navigateur pour HDFS et Hbase
données (des logs) à partir de
plusieurs sources vers le HDFS
05- Des éditeurs pour Hive, Pig, Impala et Sqoop
Oozie :
Outil de gestion de Workflow 11
11
Permet de gérer les jobs Hadoop
Ecosystème Hadoop: Pour conclure
Spark : un moteur d’analyse unifié pour le
traitement de données à grande échelle
PIG, HIVE : Services de traitement de données à
l’aide de requêtes du type SQL
HBase : système de gestion de base de données
Hadoop non-relationnelles distribué
Mahout, SparkMLib : des services pour faire du
Machine Learning
Apache Drill : Moteur de requête SQL sur
Hadoop
ZooKeeper : Pour la gestion de Cluster
Oozie : Système de planification de workflow
pour gérer les jobs Hadoop
Flume,Sqoop : Services d’ingestion de données
Solr & Lucene : Pour la recherche et 04
Kafka (messaging): Système orienté message de
l’indexation type publish/subscribe implémenté comme système
Ambari : Mise à disposition, monitoring et de traces transactionnel distribué, adapté pour la
maintenance de cluster consommation de messages en ligne et hors-ligne.
05
12
12
Ecosystème Hadoop: Pour retenir un peu plus…
Hadoop
04
05
13
13
Ecosystème Hadoop: Pour retenir un peu plus…
Hadoop
04
05
14
14
Les choix sur le marché
Hadoop
Hadoop
04
05
16
16
HDFS: Présentation
HDFS (Hadoop Distributed Filesystem)
HDFS est un système de fichiers distribué: Cela veut dire qu'il utilise le réseau pour manipuler les
accès au système.
HDFS est un système de fichiers extensible et portable
HDFS Développé par Hadoop, inspiré de GoogleFS et écrit en Java
Chaque composant du réseau peut donc accéder à chaque ressource d'autres ordinateurs
composant ce réseau.
Conçu pour stocker de très gros volumes de données sur03
un grand nombre de machines peu
couteuses équipées de disques durs banalisées
Le grand point positif de ce système est l'universalité: Il n'a pas besoin d'une machine très puissante
pour fonctionner correctement. Il est désigné pour fonctionner sur les machines ordinaires
02 04
HDFS permet l’abstraction de l’architecture physique de stockage, afin de manipuler un système de
fichier distribué comme s’il s’agissait d’un disque dur unique.
HDFS reprend de nombreux concepts proposés par des systèmes de fichiers classiques comme ext2
05 de blocs, les métadonnées qui permettent de retrouver
pour Linux ou FAT pour Windows : la notion
les blocs à partir d’un nom de fichier, les droits ou encore l’arborescence des répertoires. 17
HDFS: Présentation
Mais HDFS n’est pas un système de fichiers classique pour les principales raisons suivantes:
HDFS n’est pas solidaire du noyau du système d’exploitation: il assure une portabilité et peut être
HDFS déployé sur différents systèmes d’exploitation
Sur un système classique, la taille du disque est généralement considérée comme la limite globale
d’utilisation. Dans un système distribué comme HDFS, chaque nœud d’un cluster correspond à un
03augmenter ce volume global, il suffira
sous-ensemble du volume global de données du cluster. Pour
d’ajouter de nouveaux nœuds.
HDFS utilise des tailles de blocs largement supérieurs à ceux des systèmes classiques: par défaut, la
taille est fixée à 64 Mo. Mais, il est possible de monter à 128Mo, 256 Mo, 512 Mo voire 1Go. Pour les
systèmes classiques , la 02 04 de fournir des tailles plus grandes
taille est généralement de 4Ko. L’intérêt
permet de réduire le temps d’accès.
05
18
HDFS: Objectifs
Garantir l'intégrité des données même en cas de défaillance système (plantage d'une
HDFS machine)
Permettre un traitement rapide des fichiers d'une grande taille (GB et plus)
HDFS est moins adapté à beaucoup de fichiers de petites tailles
03
Rapprocher la lecture de la localisation des fichiers
HDFS intègre des interfaces qui permettent aux applications de localiser plus rapidement
les ressources demandées dans le cluster
02 04
05
19
HDFS: Architecture Nœuds
Datanode:
• Un Datanode contient 02les blocs de données 04
• Il y a un Datanode pour chaque machine au sein du cluster
• Les Datanodes sont sous les ordres du Namenode et sont
surnommés Workers
• Ils sont sollicités par les Namenodes lors des opérations de
lecture et d’écriture 05
• C'est lui qui apporte au namenode une liste des blocks
stockés. Ce rapport est envoyé périodiquement. 21
HDFS: Architecture
Chaque NameNode est composé des parties suivantes :
VERSION : le fichier qui contient les informations sur le namenode.
On y retrouve :
• l'identifiant pour le système de fichiers,
• le temps de création,
• le type de stockage,
HDFS • la version de la structure des données HDFS.
FEDITS: C’est un fichier très important qui regroupe toutes les
opérations effectuées dans le système. Chaque fois qu’une action
d'écriture est effectuée, elle est d'abord placée dans ce fichier de
logs. 03
• Ce n'est que par la suite que la mémoire est notifiée de cette
nouvelle opération.
• Les données stockées dans la mémoire sont utilisées pour les
opérations de lecture.
• Le fichier Edits sert un peu comme le backup qui doit
02 l'état de fichiers si le système 04
permettre à reconstruire plante.
FSIMAGE: c'est un fichier binaire utilisé comme un point de
contrôle pour les métadonnées.
• Il joue aussi un rôle important dans la récupération des
données dans le cas d'une défaillance de système.
FSTIME: C’est aussi un fichier binaire. 05
• Il stocke les informations sur la dernière opération de
contrôle sur les données. 22
HDFS: Architecture
En ce qui concerne la structure des répertoires datanode, elle possède
aussi un fichier VERSION.
A part les mêmes informations que celles stockées dans ce fichier dans
05
23
HDFS: Architecture
Opération de lecture
L’opération de lecture d'un fichier placé dans le système
HDFS se base sur plusieurs étapes composées
HDFS d'interactions entre namenode et datanode:
• Le client se connecte à l'HDFS. Le système demande
alors namenode.
• Namenode répond et indique les emplacements des
blocks composant le fichier recherché par le client.
• Il retourne les adresses les plus proches de la machine
03
du cluster qui effectue l'appel.
• Les datanodes choisis retournent ensuite les données
au client.
• Une fois le retour des données terminé, la connexion
du client est fermée. 02 04
05
24
HDFS: Architecture
Opération d’écriture
• Le client demande la création d'un nouveau fichier.
• Le système informe alors namenode de cette demande.
• Namenode crée le nouveau fichier sans aucun block
associé (donc sans datanodes).
HDFS • Si les données à écrire sont correctes (fichier n'existe
pas et le client a les droits d'écrire dans le système), le
fichier est divisé en plusieurs paquets. Ils sont ensuite
placés dans la queue interne appelée data queue
(queue des données).
• L'écriture se fait ensuite par paquets, dans les
03
datanodes.
• Chaque paquet est répliqué dans plusieurs datanodes
(nombre déterminé par l'entrée de configuration
dfs.replication.min).
• 02 le paquet est alors
Une fois la réplication terminée, 04
supprimé d'une autre queue, acknowledged queue (la
queue de reconnaissance).
• Quand tous les blocks sont écrits, datanodes envoient
les informations avec les emplacements de ces blocks
au namenode. 05
• Grâce à cette information, namenode pourra à l'avenir
retrouver les fichiers demandés par le client. 25
HDFS: Architecture
Quels sont les problèmes possibles?
Panne de réseau ?
Panne de disque sur les DataNodes ?
HDFS
Pas tous les DN sont utilisés ?
02 04
05
26
HDFS: Architecture
Quels sont les problèmes possibles?
Panne de réseau ?
Panne de disque sur les DataNodes ?
HDFS
Pas tous les DN sont utilisés ?
02 04
05
27
HDFS: Architecture
Les solutions:
Si l’un des nœuds a un problème, les données seront
perdues
HDFS • Hadoop réplique chaque bloc 3 fois (par défaut)
• Il choisit 3 nœuds au hasard, et place une copie du bloc
dans chacun d’eux
• Si le nœud est en panne, le NN le détecte, et s’occupe de
03avoir
répliquer encore les blocs qui y étaient hébergés pour
toujours 3 copies stockées
Concept de Rack Awareness (rack = baie de stockage)
02 04
05
28
HDFS: Architecture
Les solutions:
Si le NameNode a un problème ?
• Si c’est un problème d’accès (réseau), les données sont
HDFS temporairement inaccessibles
• Si le disque du NN est défaillant, les données seront perdues à
jamais= Mort de HDFS
02
05
30
HDFS: Architecture
Pour Conclure
Le Namenode est vital pour HDFS mais il est unique.
Dans les versions 2.x de Hadoop, une nouvelle configuration
appelée High Availability est introduite.
HDFS Dans cette version :
• Il existe 2 namenodes de secours qui se comportent
comme des clones ;
• Ils sont en état d’attente et sont mis à jour en
03
permanence à l’aide de services appelés JournalNodes ;
• Les namenodes de secours sont capables de prendre le
relai instantanément en cas de panne du namenode ;
• Secondary namenode devient, de ce fait, inutile.
02
05
31
MapReduce:Présentation
Pour exécuter un problème large de manière distribuée, il faut pouvoir le
découper en plusieurs problèmes de taille réduite à exécuter sur chaque machine
MapReduce du cluster (diviser pour régner)
MapReduce est un Framework de traitement de données en clusters.
C’est un modèle de programmation créé par Google pour le traitement et la
génération de larges ensembles de données sur des clusters d’ordinateurs.
Il s’agit d’un composant central du Framework logiciel Apache Hadoop, qui
permet le traitement résilient (capacité à continuer de fonctionner en cas de
panne) et distribué d’ensembles de données non structurées 03 massives sur des
clusters d’ordinateurs, au sein desquels chaque noeud possède son propre
espace de stockage.
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 ou Ruby 02 04
05
32
MapReduce: Opérations
MapReduce définit deux opérations distinctes à effectuer sur les données d’entrée:
MapReduce
La première MAP va transformer les données d’entrée en une série de couples clef/valeur
• Elle va regrouper les données en les associant à des clefs, choisies de telle sorte que
les couples clef/valeur aient un sens par rapport au problème à résoudre
• Cette opération doit être parallélisable: on doit pouvoir découper les données
d’entrée en plusieurs fragments et faire exécuter l’opération MAP à chaque machine
du cluster sur un fragment distinct.
La seconde REDUCE va appliquer un traitement à toutes les valeurs 03de chacune des clefs
distinctes produite par l’opération MAP.
• Au terme de l’opération REDUCE, on aura un résultat pour chacune des clefs distinctes
• On attribuera à chacune des machines du cluster une des clefs uniques produites par
MAP, en lui donnant la liste des valeurs associées à la clef.
• Chacune des machines effectuera alors l’opération REDUCE pour cette clef.
02 04
On distingue donc 4 étapes distinctes dans un traitement MapReduce:
MapReduce 1. Choisir une manière de découper les données d’entrée de telle sorte que
l’opération MAP soit parallélisable
2. Définir quelle clef utiliser pour notre problème
3. Ecrire le programme pour l’opération MAP
4. Ecrire le programme pour l’opération REDUCE
03
Et Hadoop se chargera du reste
02 04
05
34
MapReduce: Exemple Explicatif (Le jus de pomme)
Comment faire du jus de pomme?
03
Pouvons-nous simplifier?
• Au lieu de presser des pommes entières, on préfère les couper au
préalable en quartiers. La phase d’épluchage devient une phase
d’épluchage/découpage.
02 04
05
35
MapReduce: Exemple Explicatif (Le jus de pomme)
Si nous voulons beaucoup de jus de pomme
• Une seule personne ne suffit plus à la tâche.
MapReduce • Heureusement la méthode employée se généralise facilement à
une brigade de n éplucheurs.
03
Parallélisation/Scalabilité/Robustesse
02
05
36
MapReduce: Exemple Explicatif (Le jus de pomme)
Jus de Fruits MapReduce
On peut envisager de produire du jus d’orange, du jus d’ananas, et
MapReduce ainsi de suite.
Le processus consistant en une double phase de transformation
individuelle des ingrédients, puis d’élaboration collective convient
tout à fait, à une adaptation près: comme on ne peut pas presser
ensemble des oranges et les pommes, Il faut ajouter une étape de
tri/regroupement dans l’atelier d’assemblage.
La première phase d’épluchage reste inchangée
03
02
05
36
MapReduce: Exemple Explicatif (Le jus de pomme)
Configuration avec plusieurs ateliers d’assemblage
Dans une configuration avec plusieurs ateliers d’assemblage, chacun est
MapReduce donc spécialisé pour traiter une ou plusieurs catégories. Bien entendu, il
faut s’assurer que chaque catégorie est prise en charge par un atelier.
C’est le rôle d’une nouvelle machine, le répartiteur
03
02
05
37
MapReduce: Exemple Explicatif (Le jus de pomme)
Configuration avec plusieurs ateliers d’assemblage
Dans une configuration avec plusieurs ateliers d’assemblage, chacun est
MapReduce donc spécialisé pour traiter une ou plusieurs catégories. Bien entendu, il
faut s’assurer que chaque catégorie est prise en charge par un atelier.
C’est le rôle d’une nouvelle machine, le répartiteur
03
02
05
38
MapReduce: Exemple Concret
Exemple classique : le comptage de mots
2 MAP
On doit déterminer la clef à utiliser Notre opération03MAP sera aussi très simple: on va parcourir
pour note opération MAP et écrire le le fragment et pour chacun des mots générer le couple
code de l’opération MAP elle-même clef/valeur: (MOT,1). La valeur indique ici l’occurrence pour
Puisqu’on s’intéresse aux occurrences cette clef, puisqu’on a croisé le mot une seule fois, on donne
des mots dans le texte, et qu’à chaque la valeur 1
terme on aura après l’opération 02
REDUCE un résultat pour chacune des
clefs distinctes, la clé qui s’impose
logiquement est le mot-lui-même.
05
40
MapReduce: Exemple Concret
Le code de notre opération MAP sera donc (en pseudo code)
2 MAP
Opération Map :
Séparation de l'unité en mots (selon les espaces)
05
Emission d'une paire <mot,1> pour chaque mot
41
MapReduce: Exemple Concret
(celui;1) (celui; 1) (fou;1) (fou;1)
• Notre exemple est évidemment trivial et son exécution aurait été instantanée même
MapReduce
sur une machine unique, mais il est utile: on pourrait tout à fait utiliser les mêmes
implémentations de MAP et REDUCE sur l’intégralité des textes d’une bibliothèque
Française, et obtenir ainsi un bon échantillon des mots les plus utilisés dans la langue
Française
• L’intérêt du modèle MapReduce est qu’il nous suffit de développer les deux
opérations réellement importantes du traitement MAP et REDUCE et de bénéficier
automatiquement de la possibilité d’effectuer le traitement sur un nombre variable
de machines de manière distribuée
02
05
43
MapReduce: Expliqué autrement
MapReduce
02
05is Map-Reduce? »
Posté par Mirko Krivanek: « What
https://www.datasciencecentral.com/forum/topics/what-is-map-reduce 44
MapReduce: Le fameux exemple de Graphe social
MapReduce On suppose qu'on administre un réseau social comportant des millions d'utilisateurs.
Pour chaque utilisateur, on a dans notre base de données la liste des utilisateurs qui sont
ses amis sur le réseau (via une requête SQL).
On souhaite afficher quand un utilisateur va sur la page d'un autre utilisateur une indication
« Vous avez N amis en commun ».
On ne peut pas se permettre d'effectuer une série de requêtes SQL à chaque fois que la
page est accédé (trop lourd en traitement).
On va donc développer des programmes MAP et REDUCE pour cette opération et exécuter
02
le traitement toutes les nuits sur notre base de données, en stockant le résultat dans une
nouvelle table.
05
45
MapReduce: Le fameux exemple de Graphe social
Nos données d’entrée sont sous la forme Utilisateur=>Amis
Split
MapReduce
Puisqu’on est intéressé par l’information« amis en commun entre deux utilisateurs »
et qu’on aura à terme une valeur par clef, on va choisir pour clef la concaténation
entre deux utilisateurs.
Par exemple, la clef «A-B » désignera « les amis en commun des utilisateurs A et B »
02
On peut segmenter les données par ligne
05
46
MapReduce: Le fameux exemple de Graphe social
Notre opération MAP va se contenter de prendre la liste des amis fournie en entrée et va
générer toutes les clefs distinctes possibles à partir de cette liste. La valeur sera simplement
MapReduce
la liste d’amis, telle quelle.
On fait également en sorte que la clef soit toujours triée par ordre alphabétique (clef « B-A»
sera exprimée sous la forme « A-B»)
Mapper
Le pseudo code de notre opération MAP sera donc:
02
Pour: 05
On obtient:
47
MapReduce: Le fameux exemple de Graphe social
Pour la seconde ligne: On obtiendra:
MapReduce
02
05
48
MapReduce: Le fameux exemple de Graphe social
Une fois l’opération MAP effectuée, Hadoop va récupérer les couples (clef;valeur)
MapReduce
de tous les fragments et les grouper par clef distincte.
SHUFFLE
02
On obtient bien, pour chaque clef « USER1-USER2 », deux listes d’amis: les amis de
USER1 et ceux de USER2
05
49
MapReduce: Le fameux exemple de Graphe social
Il nous faut enfin écrire notre programme REDUCE (en Pseudo-code)
REDUCE
MapReduce
Il va recevoir en entrée toutes les valeurs associées à une clef.
Son rôle va être très simple: déterminer quels sont les amis qui apparaissent dans
la liste (les valeurs) qui nous sont fournies
02
05
50
MapReduce: Le fameux exemple de Graphe social
-Conclusion-
En utilisant le modèle MapReduce, on a ainsi pu créer deux programmes très simples de
MapReduce
quelques lignes de code seulement, qui permettent d’effectuer un traitement somme
assez complexe.
Mieux encore notre traitement est parallélisable: même avec des dizaines de millions
d’utilisateurs, du moment qu’on a assez de machines au sein du cluster Hadoop, le
traitement sera effectué rapidement. Pour aller plus vite, il nous suffit de rajouter plus de
machines.
Pour notre réseau social, il suffira d’effectuer ce traitement toutes les nuits à heure fixe
et de stocker les résultats02
dans une table. Ainsi lorsqu’un utilisateur visitera la page d’un
autre utilisateur, un seul SELECT dans la base suffira pour obtenir la liste des amis en
commun avec un poids en traitement très faible pour le serveur.
05
51
MapReduce V1 (MRv1): Composants
MapReduce v1 intègre trois composants
API
MapReduce
• Pour permettre au programmeur l’écriture
d’applications MapReduce
Framework
• Services permettant l’exécution des Jobs MapReduce,
le Shuffle/Sort…
Resource Management
• Infrastructure pour gérer les noeuds du cluster, allouer
des ressources et ordonnancer les jobs
02
05
51
MapReduce V1 (MRv1): Daemons
JobTracker TaskTracker
05
53
MapReduce V1 (MRv1): Fonctionnement
MapReduce
02
05
54
MapReduce V1 (MRv1): Fonctionnement
Le JobTracker
1. Le client (un outil Hadoop console ) va soumettre le travail à effectuer au JobTracker:
MapReduce
un archive java.jar implémentant les opérations Map et Reduce. Il va également
soumettre le nom des fichiers d’entrée et l’endroit où stocker les résultats.
3. Le JobTracker, détermine quels sont les nœuds TaskTracker les plus appropriés, c.à.d
ceux qui contiennent les données sur lesquelles travailler sur la même machine ou le
plus proche possible (même rack/rack proche)
05
55
MapReduce V1 (MRv1): Fonctionnement
Le JobTracker
5. Le JobTracker communique avec les nœuds TaskTracker en train d'exécuter les tâches.
MapReduce Ils envoient régulièrement un « heartbeat », un message signalant qu'ils travaillent
toujours sur la sous-tâche reçue. Si aucun heartbeat n'est reçu dans une période donnée,
le JobTracker considère la tâche comme ayant échouée et donne le même travail à
effectuer à un autre TaskTracker.
6. Si par hasard une tâche échoue (erreur java, données incorrectes, etc.), le TaskTracker
va signaler au JobTracker que la tâche n'a pas pu être exécutée. Le JobTracker va alors
décider de la conduite à adopter: redonner la sous-tâche à un autre TaskTracker,
demander au même TaskTracker de ré-essayer, marquer les données concernées comme
invalides, etc. il pourra même blacklister le TaskTracker concerné comme non-fiable dans
certains cas
02
05
56
MapReduce V1 (MRv1): Fonctionnement
Le JobTracker
7. Une fois que toutes les opérations envoyées aux TaskTracker (MAP +REDUCE) ont été
MapReduce effectuées et confirmées comme effectuées par tous les nœuds, le JobTracker marque la
tâche comme « effectuée ».
des informations sur les tâches en train d'être effectuées: étape actuelle (MAP,
05
57
MapReduce V1 (MRv1): Fonctionnement
Le TaskTracker
Le TaskTracker dispose d'un nombre de « slots » d'exécution. A chaque« slot » correspond une
MapReduce tâche exécutable (configurable). Ainsi, une machine ayant par exemple un processeur à 8 cœurs
pourrait avoir 16 slots d'opération configurés.
Lorsqu'il reçoit une nouvelle tâche à effectuer (MAP, REDUCE, SHUFFLE) depuis le JobTracker, le
TaskTracker va démarrer une nouvelle instance de Java avec le fichier .jar fourni par le
JobTracker, en appelant l'opération correspondante.
Une fois la tâche démarrée, il enverra régulièrement au JobTracker ses messages heartbeats. En
dehors d'informer le JobTracker qu'il est toujours fonctionnels, ces messages indiquent
également le nombre de slots disponibles sur le TaskTracker concerné.
MapReduce
02
05
59
MapReduce V1 (MRv1): Avantages de
l’architecture
MapReduce
Le principal avantage de ce framework est sa tolérance aux erreurs
Une tâche est transférée d’un nœud à l’autre, et si le nœud principal remarque qu’un nœud a
été silencieux pendant un intervalle de temps plus long que prévu, le nœud principal assigne à
nouveau la tâche à un autre nœud.
Ceci crée une résilience et facilite le lancement de cette structure logicielle sur des serveurs
peu coûteux.
02
05
60
MapReduce V1 (MRv1): Problèmes
Le Job Tracker s’exécute sur une seule machine, et fait plusieurs tâches (gestion de
ressources, ordonnancement et monitoring des tâches…)
MapReduce
Problème de scalabilité: les nombreux datanodes existants ne sont pas exploités, et
le nombre de noeuds par cluster limité à 4000
MapReduce V2 05
61
MapReduce V2 (MRv2): YARN
Présentation
YARN (Yet-Another-Resource-Negotiator) appelé aussi MRv2
MapReduce C’est une évolution du framework MapReduce
02
05
62
MapReduce V2 (MRv2): Composants
La plupart des fonctionnalités du Job Tracker sont déplacées vers Application Master
02
05
63
MapReduce V2 (MRv2): Architecture
MapReduce
02
05
64
MapReduce V2 (MRv2): Architecture
MapReduce
02
05
65
MapReduce V2 (MRv2): Architecture
MapReduce
02
05
66
MapReduce V2 (MRv2): Architecture
MapReduce
02
05
67
MapReduce V2 (MRv2): Architecture
MapReduce
02
05
68
MapReduce V2 (MRv2): Architecture
MapReduce
02
05
69
MapReduce V2 (MRv2): Déroulement d’une
exécution
1. Un client se connecte au ResourceManager, et annonce l’exécution du programme /
fournit son code (jar).
MapReduce
2. L’Application Manager du ResourceManager prépare un container libre pour y
exécuter l’Application Master du programme (son main).
3. L’application Master du programme est lancé; il s’enregistre immédiatement auprés
du ResourceManager et effectue ses demandes de ressources (containers pour
exécuter tâches map et reduce, par exemple).
4. Il contacte alors directement les NodeManager correspondants aux containers qui lui
ont été attribués pour leur soumettre les tâches.
5. Pendant l’exécution des différentes tâches, les containers (par le biais des démons
NodeManager) mettent à jour l’Application Master sur leur statut continuellement. En
cas de problème, celui-ci peut demander de nouveaux containers au Resource
Manager pour ré-exécuter une tâche.
02 obtenir une mise à jour sur le statut de l’exécution soit
6. L’utilisateur peut par ailleurs
en contactant le ResourceManager, soit en contactant l’Application Master
directement.
7. Une fois toutes les tâches exécutées, l’Application Master signale le ResourceManager
et s’arrète. 05
8. Le ResourceManager libère alors le container occupé restant, qui exécutait le code de
l’Application Master. 70
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
71
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
72
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
73
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
74
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
75
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
76
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
77
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
78
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
79
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
81
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
82
MapReduce V2 (MRv2): Déroulement d’une
exécution
MapReduce
02
05
83