CH 2 Hadoop
CH 2 Hadoop
CH 2 Hadoop
Hadoop est une plateforme (framework) open source conçue pour réaliser d’une façon distribuée des traitement
sur des volumes de données massives, de l’ordre de plusieurs pétaoctets. Ainsi, il est destiné à faciliter la création
d’applications distribuées et scalables.
Projet de la fondation Apache
Open source
Modèle simple pour les développeurs: il suffit de développer des tâches Map-Reduce, depuis des interfaces
simples accessibles via des librairies dans des langages multiple (Java, Python, C/C++, etc.)
S’occupe de toutes les problématique liées au calcul distribué, comme l’accès et la partage des données, la
tolérance aux pannes, ou encore la répartition de tâches aux machines membres du cluster: le programmeur a
simplement à s’occuper du développement logiciel pour l’exécution de la tâche.
2
HADOOP
3
HADOOP : HISTORIQUE
2003/2004 :
Deux whitepapers par Google
GFS (un système de fichier distribué)
MapReduce (calcul distribué)
2004 :
Première implémentation par Doug Cutting (directeur archive.org) et Mike Cafarella (étudiant)
développent un framework.
2006 Doug Cutting, chez Yahoo
Améliore l’indexation du moteur de recherche de Yahoo
Créé une nouvelle version du framework en tant que projet Open Source de la fondation Apache :
Hadoop (le nom d’un éléphant en peluche de son fils)
2015
Hadoop est utilisé dans nombreuses entreprises et universités
2021 4
5
ECO-SYSTÈME HADOOP
6
MODULES DE APACHE HADOOP
Module de base
HDFS : Système de fichiers distribué
MapReduce : Framework de traitement parallélisé
YARN (Yes Another Resource Negotiator)/MapReduce 2.0 : Système de gestion de ressources. (à partir de la
version 2.3)
Autres modules :
Flume : un service qui a été créé pour permettre la collecte, l’agrégation et la mobilité de données log.
Sqoop : Transfert des données entre Hadoop et un entrepôt de données structuré tel qu’une BD
relationnelle.
Hive : exécution de requêtes SQL sur un cluster Hadoop (développé par Facebook)
Pig : Requêtage des données Hadoop à partir d’un langage de script (développé par Yahoo)
7
MODULES DE APACHE HADOOP
8
HDFS
9
HDFS : ARCHITECTURE
10
COMPOSANTS DE HDFS
12
HDFS : ECRITURE ET LECTURE
Lecture de HDFS
Le client interroge le NN pour localiser les adresses de DN hébergeant les blocs à lire
Le NN donne la liste des DN pour chaque bloc
Le client choisit un DN pour récupérer le bloc, s’il ne répond pas il demande à un autre
Ecriture dans HDFS
Le client indique au NN qu’il souhaite écrire un bloc
Le NN indique le DN à qui envoyer
Le client envoie le bloc au DN
Le DN communique ses blocs au NN
Les DN répliquent le bloc entre eux
Le cycle se répète pour le bloc suivant
13
SHELL HDFS
14
TRANSFERT DES DONNÉES ENTRE SGBD ET HDFS
Sqoop
Outil conçu pour transférer efficacement des données entre des sources de données structurées, semi-
structurées et non-structurées
Assure le transfert des données vers et depuis HDFS
Supporte plusieurs type de BDR
Conserve les protocole de sécurité de BDR
Utilisation de connecteur JDBC (mais pénalise les performance)
15
ÉTAPES DE TRANSFERT DES DONNÉES
16
MAP-REDUCE
Principe
Découper le programme en plusieurs sous-problèmes de taille réduite
Exécution parallèle sur un cluster
Opérations
Map transforme les données d’entrée en une série de couples (key, value)
Reduce applique un traitement sur les données d’une même clé
17
FONCTIONNEMENT DE MAP-REDUCE
18
ETAPES DE MAP-REDUCE
Découpage (Split)
Les données d’entrée sont découpés en plusieurs blocs (splits)
Mapping (Map)
A chaque entrée on associe le couple (clé, valeur)
Groupage (Shuffle)
Les valeurs de même clé sont regroupés (clé, (valeur1, valeur2, …))
Reduction (Reduce)
Pour chaque groupe indexé par un clé, on associe un couple final (clé résultat) après des calculs sur
l’ensemble (valeur1, valeur2, …)
19
EXEMPLE WORD COUNT
Objectif
Compter le nombre d’occurrences des différents mots composants un grand fichier
20
EXEMPLE WORD COUNT : MAP
Principe de Map
A chaque mot on associe le couple (mot, 1)
Clé: mot, valeur: 1
Le programme doit être écrit par l’utilisateur
Pseudo-code:
Map (key, value)
POUR CHAQUE word w IN value
Emettre(w,1)
21
EXEMPLE WORD COUNT : SHUFFLE & SORT
22
EXEMPLE WORD COUNT : REDUCE
Principe
Calculer la somme de toutes les valeurs (1) pour chaque clé (mot)
Pseudo-code
Reduce (key, values)
// key: un mot; values : une liste de 1
Results = 0
POUR CHAQUE value v IN values
resultat += v ;
Emettre (key, resultat)
23
EXEMPLE WORD COUNT : PROGRAMME DE MAP
EN PYTHON
Mapper.py
!/usr/bin/env python
"""mapper.py"""
import sys
# input comes from STDIN (standard input)
for line in sys.stdin:
# remove leading and trailing whitespace
line = line.strip()
# split the line into words
words = line.split()
for word in words:
# write the results to STDOUT (standard output); what we output here will be the input for the
# Reduce step, i.e. the input for reducer.py
# tab-delimited; the trivial word count is 1 24
Une chaine de magasins dispose d’un ensemble de fichiers logs sous la forme:
Date Cust_key OrderID Payment
On veut connaître le nombre de commandes et la commande la plus récente par client
Proposer une solution utilisant Map-Reduce en décrivant le principe des programmes, leur entrées et leurs
sorties
27
SOLUTION
Map
Extrait les couples (cust_key, (OrderID, Date)) de chaque entrée du fichier des logs
Reduce
Compte le nombre de valeurs associé à cust_key ainsi que la commande la plus récente de l’ensemble
des commandees
28
ARCHITECTURE HADOOP V1
29
ARCHITECTURE HADOOP V1
Comme pour HDFS, la gestion des tâches de Hadoop se base sur deux serveurs (des daemons):
Le JobTracker:
Il y a un seul JobTracker sur une seule machine du cluster Hadoop.
Le JobTracker est en communication avec le NameNode de HDFS et sait donc où sont les données.
Il va directement recevoir la tâche à exécuter (un .jar Java), ainsi que les données d'entrées (nom des
fichiers stockés sur HDFS) et le répertoire où stocker les données de sortie (toujours sur HDFS).
Le TaskTracker:
Il est en communication constante avec le JobTracker et va recevoir les opérations simples à effectuer
(MAP/REDUCE) ainsi que les blocs de données correspondants (stockés sur HDFS).
Il y a un TaskTracker sur chaque machine du cluster.
Comme le JobTracker est conscient de la position des données (grâce au NameNode), il peut
30
facilement déterminer les meilleures machines auxquelles attribuer les sous-tâches (celles où les blocs
de données correspondants sont stockés).
ARCHITECTURE HADOOP V1
31
ARCHITECTURE HADOOP V1 : ARCHITECTURE
GÉNÉRALE
32
ARCHITECTURE HADOOP V1
Les machines maîtres ont trois principaux rôles qui leur sont associées :
JobTracker : c'est le rôle qui permet à la machine maître de lancer des tâches distribuées, en coordonnant les
esclaves. Il planifie les exécutions, gère l'état des machines esclaves et agrège les résultats des calculs.
NameNode : ce rôle assure la répartition des données sur les machines esclaves et la gestion de l'espace de nom du
cluster. La machine qui joue ce rôle contient des métadonnées qui lui permettent de savoir sur quelle machine chaque
fichier est hébergé.
SecondaryNameNode : ce rôle intervient pour la redondance du NameNode. Normalement, il doit être assuré par
une autre machine physique autre que le NameNode car il permet en cas de panne de ce dernier, d'assurer la
continuité de fonctionnement du cluster.
Deux rôles sont associés aux machines esclaves :
TaskTracker : ce rôle permet à un esclave d'exécuter une tâche MapReduce sur les données qu'elle héberge. Le
TaskTracker est piloté par JobTracker d'une machine maître qui lui envoie la tâche à exécuter.
DataNode : dans le cluster, c'est une machine qui héberge une partie des données. Les noeuds de données sont
généralement répliqués dans le cadre d'une architecture Hadoop dans l'optique d'assurer la haute disponibilité des 33
données.
HADOOP V1 VS HADOOP V2
Hadoop v1 :
Uniquement l’utilisation de MapReduce
Mauvaise utilisation des ressources
Autres applications non prises en
charge
Hadoop V2
une troisième couche : YARN ("Yet
Another Resource Negociator"), un
outil de gestion des ressources
distribuée. (puissance de calcul et la
répartition de la charge entre les
machines) 34
YARN: YET ANOTHER RESOURCE NEGOTIATION
35
YARN (MAP-REDUCE V2)
Problème d’allocation des ressources.( dans Hadoop V1, on a parfois des tâches map sont en
attentes alors que des slots de tâche reduce sont libres)
36
ARCHITECTURE HADOOP V2
37
LES COMPOSANTS DE YARN
Outre la gestion des ressources, YARN effectue également la planification des tâches. L'architecture Apache
Hadoop YARN comprend les principaux composants suivants:
ResourceManager
agit en tant que planificateur et alloue des ressources entre toutes les applications du système
(s’exécute sure un démon maître).
NodeManager
prend la navigation à partir du ResourceManager et s'exécute sur chaque nœud du cluster (les
DataNodes). Les ressources disponibles sur un seul nœud sont gérées par NodeManager.
ApplicationMaster :
gère le cycle de vie du travail utilisateur et les besoins en ressources des applications
individuelles. Il fonctionne avec le NodeManager et surveille l'exécution des tâches par les
conteneurs. 38
LES COMPOSANTS DE YARN
Resource Manager :
remplace le JobTracker (gérer les ressources et les jobs) et ne gère que les ressources du Cluster.
Il a deux composantes principales:
a) Scheduler :
Le Scheduler est responsable de l’allocation des ressources des applications tournant sur le
cluster.
Il s’agit uniquement d’ordonnancement et d’allocation de ressources.
Les ressources allouées aux applications par le Scheduler pour leur permettre de
s’exécuter sont appelées des Containers
b) Application Manager
L’ApplicationsManager accepte les soumissions d’applications.
Une application n’étant pas gérée par le ResourceManager, la partie ApplicationsManager ne
s’occupe que de négocier le premier Container que le Scheduler allouera sur un noeud du
cluster. La particularité de ce premier Container est qu’il contient l’ApplicationMaster 39
LES COMPOSANTS DE YARN
Node Manager:
Les NodeManager sont des agents tournant sur chaque nœud et tenant le Scheduler au fait de
l’évolution des ressources disponibles. Ce dernier peut ainsi prendre ses décisions d’allocation des
Containers en prenant en compte des demandes de ressources cpu, disque, réseau, mémoire
Permet d’exécuter plus de tâches qui ont du sens pour l’Application Master, pas seulement du Map et
du Reduce.
La taille des ressources est variable (RAM, CPU, network….). Il y aura plus de valeurs codées en dur
qui nécessitent un redémarrage.
ApplicationMaster :
L’ApplicationMaster est le composant spécifique à chaque application, il est en charge des jobs qui y
sont associés.
Lancer et au besoin relancer des jobs
Négocier les Containers nécessaires auprès du Scheduler
40
LES COMPOSANTS DE YARN
Un ApplicationMaster gère donc un ou plusieurs jobs tournant sur un framework donné. Dans le cas
de base, c’est donc un ApplicationMaster qui lance un job MapReduce. De ce point de vue, il remplit
un rôle de TaskTracker.
L’ApplicationsManager est l’autorité qui gère les ApplicationMaster du cluster. A ce titre, c’est donc via
l’ApplicationsManager que l’on peut
Superviser l’état des ApplicationMaster
Relancer des ApplicationMaster
41
HADOOP V2 : LANCEMENT D’UNE APPLICATION
42
HADOOP V2 : LANCEMENT D’UNE APPLICATION
45
HADOOP V2 : LANCEMENT D’UNE APPLICATION
46
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
47
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
48
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
49
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
50
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
51
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
52
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
53
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
54
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
55
HADOOP V2 : EXÉCUTION D’UN JOB MAP-
REDUCE
56