Vous êtes sur la page 1sur 94

Chapitre 2:

Matière: Big Data

HADOOP pour Big Data Niveau: LISI-3

Année universitaire:

2021 – 2022

Hasna NJAH
Plan

1. Introduction
2. Outils d’analyse de Big Data
3. Hadoop vs Spark
4. Présentation de Hadoop
5. HDFS
6. MapReduce
7. YARN
8. Applications

2
Extraction des connaissances à partir des données
 Rechercher les modèles et les régularités des informations parmi les données
 Appliquer des transformations sur les données afin de trouver des connaissances
 Utiliser les connaissances enfouies dans les données pour prendre des décisions sages
Valeur

Sagesse Prise de decision


Prise de décision aperçu
Science des données
Connaissances Découverte des connaissances
sens

Informations Analyse et integration des données


contexte

Données SGDB
Volume

3
Outils d'analyse de Big Data
 L'échelle des volumes des données générées croît à un niveau exponentiel.

Inefficacité des
Sumonter les défis systèmes de gestion
de bases de données
Stockage relationnelles
Analyse
Traitement

4
Outils d'analyse de Big Data

>> Ressources limitées


d’un ordinateur

 Une puissance de calcul considérable et une infrastructure de


stockage massive sont nécessaires pour traiter ces données
massives en local ou dans les centres de données des
fournisseurs de services cloud.
 En plus de l'infrastructure requise, divers outils et composants
doivent être réunis pour résoudre les problèmes de Big Data.

5
Écosystème d'analyse de Big Data

6
Écosystème d'analyse de Big Data
 MapReduce : MapReduce est un paradigme informatique distribué développé
pour traiter une grande quantité de données en parallèle en divisant une
grande tâche en une carte plus petite et en réduisant les tâches orientées.
 HDFS : le système de fichiers distribué Hadoop est un système de stockage et
de fichiers distribué utilisé par les applications Hadoop.
 YARN : composant de gestion des ressources et de planification des tâches
dans l'écosystème Hadoop.
 Spark : un cadre de traitement de données en mémoire en temps réel.
 PIG/HIVE : outils de script et de requête de type SQL pour le traitement des
données et la simplification de la complexité des programmes MapReduce.
 HBase, MongoDB, Elasticsearch : Exemples de quelques bases de données
NoSQL.
 Mahout, Spark ML : outils pour exécuter des algorithmes d'apprentissage
automatique évolutifs de manière distribuée.
 Flume, Sqoop, Logstash : Intégration de données et ingestion de données
structurées et non structurées.
 Kibana : Un outil pour visualiser les données Elasticsearch. 7
L'entreprise peut acquérir un avantage concurrentiel
en adoptant rapidement l'analyse Big Data

 Deux architectures de base sont utilisées en pratique:


Écosystème
d'analyse de
Big Data
 Hadoop et Spark, tous deux développés par Apache
Software Foundation, sont des frameworks open source
largement utilisés pour les architectures Big Data.
 Chaque framework contient un vaste écosystème de
technologies open source qui préparent, traitent, gèrent
et analysent de grands ensembles de données.

8
Hadoop vs Spark components

 Hadoop Distributed File System (HDFS):


Système principal de stockage de données
qui gère de grands ensembles de données
exécutés sur du matériel de base.
Hadoop
MapReduce  Yet Another Resource Negotiator (YARN):
Common
Gestionnaire de ressources de cluster qui
planifie les tâches et alloue des ressources
YRAN
(par exemple, CPU et mémoire) aux
Resource Management
applications.
HDFS  Hadoop MapReduce: Divise les tâches de
Distributed File Storage traitement de Big Data en plus petites,
répartit les petites tâches sur différents
nœuds, puis exécute chaque tâche.
 Hadoop Common (Hadoop Core):
Ensemble de bibliothèques et d'utilitaires
communs dont dépendent les trois autres
modules. 9
Hadoop vs Spark components
 Spark Core: moteur d'exécution sous-jacent
qui planifie et répartit les tâches et coordonne
les opérations d'entrée et de sortie.
Machine learning library  Spark SQL: collecte des informations sur les
données structurées pour permettre aux
Spark Streaming

utilisateurs d'optimiser le traitement des


Spark SQL

GraphX données structurées.


 Spark Streaming : prend les données de
différentes sources de streaming et les divise
en micro-lots pour un flux continu.
 Machine Learning Library (MLlib): un
ensemble d'algorithmes d'apprentissage
Spark Core API automatique (ML) pour l'évolutivité ainsi que
R, SQL, Python, Scala and Java
des outils pour la sélection de fonctionnalités
et la création de pipelines ML.
 GraphX: moteur de calcul convivial qui
permet la création, la modification et l'analyse
interactives de données évolutives et
10
structurées sous forme de graphes.
Hadoop vs Spark use cases

 Hadoop est plus efficace pour les  Spark est plus efficace pour les
scenarios incluant: scenarios incluant:

 Le traitement de grands ensembles  Le traitement des chaînes


de données dans des environnements
où la taille des données dépasse la d'opérations parallèles en utilisant
mémoire disponible des algorithmes itératifs
 LE traitement par lots avec des tâches  L’obtention des résultats rapides
qui exploitent les opérations de avec des calculs en mémoire
lecture et d'écriture sur disque  Analyser l'analyse des données de
 La construction d’une infrastructure flux en temps réel
d'analyse de données avec un budget
limité  Le traitement parallèle au graphe
pour modéliser les données
 La terminaison des travaux qui ne
sont pas urgents  L’exécution de toutes les
 L’analyse des données historiques et applications d'apprentissage
archivées automatique
11
 Hadoop est un système distribué évolutif et tolérant
aux pannes pour le stockage et le traitement des
données
 Core Hadoop a trois composants principaux
 HDFS : stockage en cluster à large bande passante à
réparation automatique
Presentation  MapReduce : traitement distribué tolérant aux pannes
of Hadoop  YARN : gestionnaire de ressources de cluster

 Il fonctionne dans des données non structurées et


structurées
 Il renferme un vaste écosystème actif
 Il est open-source sous la licence Apache

12
Hadoop
MapReduce
Common

YRAN
Presentation Resource Management
of Hadoop
HDFS
Distributed File Storage

13
 HDFS est un système de fichiers distribué qui gère de
grands ensembles de données s'exécutant sur un
matériel de base.
HDFS  Il est utilisé pour faire évoluer un seul cluster Apache
Hadoop vers des centaines (voire des milliers) de
nœuds.
Hadoop
 HDFS est l'un des composants majeurs d'Apache
Distributed Hadoop, les autres étant MapReduce et YARN.
File  Il s'appuie sur un système de fichiers natif (ext3, xfs,
System etc.)
 Il fonctionne mieux avec un nombre modeste de gros
fichiers
 Les fichiers dans HDFS sont « écrire une fois »
 HDFS est optimisé pour les lectures en continu de
fichiers volumineux.

14
Hypothèses de HDFS

 Défaillance matérielle
 Accès aux données en continu
 Ensembles de données volumineux
 Modèle de cohérence simple
 « Déplacer le calcul coûte moins cher que déplacer des données »
 Portabilité sur des plates-formes matérielles et logicielles hétérogènes

15
HDFS architecture

HDFS CLUSTER Namespace

NameNode File
Creation
Mapping Replication
Master Deletion
Slave

DataNode DataNode DataNode


Blocks
Node 1 Node 2 Node n

16
HDFS architecture

 HDFS a une architecture maître / esclave (master/slave).


 Un cluster HDFS se compose d'un seul NameNode, un serveur maître qui
gère l'espace de noms du système de fichiers et régule l'accès aux fichiers
par les clients.
 De plus, il existe un certain nombre de DataNodes, généralement un par
nœud dans le cluster, qui gèrent le stockage attaché aux nœuds sur lesquels
ils s'exécutent.
 HDFS expose un espace de noms de système de fichiers et permet aux
données utilisateur d'être stockées dans des fichiers.
 En interne, un fichier est divisé en un ou plusieurs blocs et ces blocs sont
stockés dans un ensemble de DataNodes.

17
HDFS architecture

 Le NameNode exécute les opérations d'espace de noms du système de


fichiers telles que l'ouverture, la fermeture et le renommage des fichiers et
des répertoires.
 Il détermine également le mappage des blocs vers les DataNodes.
 Les DataNodes sont chargés de répondre aux demandes de lecture et
d'écriture des clients du système de fichiers.
 Les DataNodes effectuent également la création, la suppression et la
réplication de blocs sur instruction du NameNode.

18
HDFS architecture
 A typical deployment example:

NameNode

Master
Slave

DataNode
DataNode DataNode …
DataNode

Rare case 19
HDFS architecture

 The NameNode and DataNode are pieces of software designed to run on


commodity machines.
 HDFS is built using the Java language; any machine that supports Java
can run the NameNode or the DataNode software => Portability
 The existence of a single NameNode in a cluster greatly simplifies the
architecture of the system.
 The NameNode is the arbitrator and repository for all HDFS metadata.
 The system is designed in such a way that user data never flows through
the NameNode.

20
The File System Namespace
 HDFS prend en charge une organisation de fichiers hiérarchique
traditionnelle.
 La hiérarchie de l'espace de noms du système de fichiers est similaire à la
plupart des autres systèmes de fichiers existants

HDFS n'implémente pas encore de


Créer quotas d'utilisateurs.
HDFS ne prend pas en charge les
liens durs ou les liens logiciels.

Stoker Déplacer

Renommer
Créer Supprimer
21
The File System Namespace

 Le NameNode maintient l'espace de noms du système de fichiers.


 Toute modification apportée à l'espace de noms du système de fichiers ou
à ses propriétés est enregistrée par le NameNode.
 Une application peut spécifier le nombre de répliques d'un fichier qui doit
être conservé par HDFS.
 Le nombre de copies d'un fichier est appelé facteur de réplication de ce
fichier.
 Ces informations sont stockées par le NameNode.

22
Réplication des données

 HDFS est conçu pour stocker de manière fiable des fichiers très
volumineux sur les machines d'un grand cluster.
 Il stocke chaque fichier sous la forme d'une séquence de blocs ; tous les
blocs d'un fichier, à l'exception du dernier bloc, ont la même taille.

Les blocs d'un fichier sont répliqués pour la tolérance aux


pannes.

 La taille du bloc et le facteur de réplication sont configurables par fichier.


 Une application peut spécifier le nombre de répliques d'un fichier.
 Par défaut, ce nombre est égal à trois.
 Le facteur de réplication peut être spécifié au moment de la création du
fichier et peut être modifié ultérieurement.
 Les fichiers dans HDFS sont en écriture unique et n'ont qu'un seul auteur
à tout moment. 23
Réplication des données
 Exemple de réplication des données:

24
Data replication

 Le NameNode prend toutes les décisions concernant la réplication des


blocs.
 Il reçoit périodiquement un Heartbeat et un Blockreport de chacun des
DataNodes du cluster.

 La réception d'un Heartbeat  Un Blockreport contient une


implique que le DataNode liste de tous les blockages sur
fonctionne correctement. un DataNode.

25
Robustness
 L'objectif principal de HDFS est de stocker des données de manière fiable
même en présence de pannes.
 Les trois types d'échec courants sont les échecs NameNode, les échecs
DataNode et les partitions réseau.

✓ Défaillance du disque de données, Heartbeat et


réplication
✓ Rééquilibrage de cluster
✓ Intégrité des données
✓ Défaillance du disque de métadonnées
✓ Copies instantanés

26
An example of HDFS

 Considérez un fichier qui comprend les numéros de téléphone de tout le


monde en Tunisie ; les numéros des personnes dont le nom de famille
commence par A peuvent être stockés sur le serveur 1, B sur le serveur 2,
etc.

Comment modéliseriez-vous cette situation avec


HDFS de Hadoop ?

27
An example of HDFS

HDFS CLUSTER NameNode

Master
Slave

DataNode DataNode DataNode DataNode DataNode

Names A Names B Names Z Replicate 1 Replicate 2

Server 1 Server 2 Server 26 Server 27 Server 28


28
An example of HDFS

 Avec Hadoop, des morceaux de ce répertoire seraient stockés dans le


cluster et pour reconstruire l'intégralité du répertoire, votre programme
aurait besoin des blocs de chaque serveur du cluster.
 Pour garantir la disponibilité en cas de défaillance d'un serveur, HDFS
réplique par défaut ces petits éléments sur deux serveurs
supplémentaires.
 La redondance peut être augmentée ou diminuée fichier par fichier ou
pour un environnement entier ; par exemple, généralement un cluster
Hadoop de développement n'a pas besoin de redondance de données.
 Cette redondance offre de multiples avantages, le plus évident étant une
disponibilité plus élevée.
 La redondance permet également au cluster Hadoop de diviser le travail en
plus petits morceaux et d'exécuter ces travaux sur tous les serveurs du
cluster pour une meilleure évolutivité.
 Enfin, vous bénéficiez de la localisation des données, ce qui est essentiel
lorsque vous travaillez avec de grands ensembles de données.
29
HDFS file write operation

30
HDFS file read operation

31
Hadoop
MapReduce
Common

YRAN
Presentation Resource Management
of Hadoop
HDFS
Distributed File Storage

32
 Une méthode de tâche répartie sur plusieurs nœuds
 Chaque nœud traite les données qui y sont stockées
 Il se compose de deux phases créées par les
développeurs : Map et Reduce
What is  Entre Map et Reduce, il y a les phases Shuffle et Sort.
MapReduce?  MapReduce fournit :
 Parallélisation et distribution automatique
 Tolérance aux pannes
 Outils d'état et de surveillance
 Une abstraction propre pour les programmeurs

33
 Principes de base:
 les données sont stockées dans l'ensemble du cluster
 les programmes sont amenés aux données, pas les
données au programme
MapReduce
 Les données sont stockées sur l'ensemble du cluster
(HDFS)
 l'ensemble du cluster participe au système de fichiers
 les blocs d'un seul fichier sont répartis dans le cluster
 un bloc donné est généralement répliqué également
pour la résilience

34
Présentation de MapReduce

 MapReduce est une technique de traitement et un modèle de programme


pour le calcul distribué basé sur Java.
 L'algorithme MapReduce contient deux tâches importantes, à savoir Map
et Reduce.
 La tâche « Map » prend un ensemble de données et le convertit en un autre
ensemble de données, où les éléments individuels sont décomposés en
tuples (paires clé/valeur).
 Deuxièmement, la tâche « Reduce », qui prend la sortie d'une carte comme
entrée et combine ces tuples de données en un plus petit ensemble de
tuples.

 Comme l'indique la séquence du nom MapReduce, la tâche de réduction


est toujours effectuée après la tâche de mappage.

35
Présentation de MapReduce

 Le principal avantage de MapReduce est qu'il est facile de faire évoluer le


traitement des données sur plusieurs nœuds de calcul.
 Dans le modèle MapReduce, les primitives de traitement des données
sont appelées mappeurs et réducteurs.
 Décomposer une application de traitement de données en mappeurs et
réducteurs n'est parfois pas trivial.
 Mais, une fois que nous écrivons une application sous la forme
MapReduce, la mise à l'échelle de l'application pour qu'elle s'exécute sur
des centaines, des milliers, voire des dizaines de milliers de machines
dans un cluster n'est qu'un changement de configuration.
 Cette simple scalabilité a attiré de nombreux programmeurs à utiliser le
modèle MapReduce.

36
Algorithme

Map

Shuffle
 Avant de plonger dans les aspects
techniques de l'algorithme
MapReduce, visualisons ses
principales étapes.
Reduce
 Notre objectif ici consiste à
déterminer le nombre d'objets
par forme géométrique.
Red:27 Blue: 21 Green: 30 37
Algorithme

 Le programme MapReduce s'exécute en trois étapes, à savoir l'étape de la


carte, l'étape de lecture aléatoire et l'étape de réduction.

 Étape de « Map » - La tache du mappeur consiste à traiter les données


d'entrée. Généralement, les données d'entrée se présentent sous la forme
d'un fichier ou d'un répertoire et sont stockées dans le système de fichiers
Hadoop (HDFS). Le fichier d'entrée est passé à la fonction de mappeur ligne
par ligne. Le mappeur traite les données et crée plusieurs petits morceaux de
données.

 Étape de « Reduce » - Cette étape est la combinaison de l'étape de lecture


aléatoire « shuffle » et de l'étape de réduction. Le travail du réducteur est de
traiter les données qui proviennent du mappeur. Après le traitement, il
produit un nouvel ensemble de sorties, qui sera stocké dans le HDFS.

38
Algorithme

39
Algorithme

40
Algorithme

41
Algorithme
 Conseils pour écrire un programme Map Reduce :

• Choisissez un moyen de diviser les données afin que « Map »


1 soit parallélisable

• Choisissez la clé à utiliser pour notre problème


2

• Écrivez le programme pour l'opération « Map »


3

• Ecrivez le programme pour l'opération « Reduce »


4

42
Inputs and Outputs
 Le framework MapReduce fonctionne sur des paires <clé, valeur> notées
en anglais <key, value>

<clé, valeur>

L’input du job est une L’output du job est une


paire <clé, valeur> paire <clé, valeur>

 La clé et les classes de valeur doivent être sérialisées par le framework et


doivent donc implémenter l'interface Writable.
 De plus, les classes clés doivent implémenter l'interface Writable-
Comparable pour faciliter le tri par le framework.

43
Terminologie

 PayLoad - Les applications implémentent les fonctions Map et Reduce et


constituent le cœur du travail.
 Mapper - Mapper mappe les paires clé/valeur d'entrée à un ensemble de paire
clé/valeur intermédiaire.
 NamedNode - Nœud qui gère le HDFS.
 DataNode - Nœud où les données sont présentées à l'avance avant tout
traitement.
 MasterNode - Nœud sur lequel s'exécute JobTracker et qui accepte les
demandes de travail des clients.
 SlaveNode - Nœud où s'exécutent les programmes Map et Reduce.

44
Terminologie

 JobTracker - Planifie les tâches et suit les tâches affectées au suivi des tâches.
 TaskTracker - Suit la tâche et signale l'état à JobTracker.
 Job - Un programme est une exécution d'un mappeur et d'un réducteur sur un
ensemble de données.
 Task : une tâche - Une exécution d'un mappeur ou d'un réducteur sur une
tranche de données.
 TaskAttempt: une tentative de tâche - Une instance particulière d'une
tentative d'exécution d'une tâche sur un SlaveNode.

45
MapReduce over HDFS

Master node

MapReduce framework HDFS


Hadoop CLUSTER
Job Tracker NameNode
Client program

Task tracker Task tracker Task tracker

Task attempt Task attempt … Task attempt


Local DB Local DB Local DB
DataNode DataNode DataNode

46
Slave node Slave node Slave node
MapReduce over HDFS

 Un utilisateur exécute un programme client sur un ordinateur client


 Le programme client soumet un travail à Hadoop
 Le travail est envoyé au processus JobTracker sur le nœud maître
 Chaque nœud esclave exécute un processus appelé TaskTracker
 Le JobTracker demande aux TaskTrackers d'exécuter et de surveiller les
tâches
 Une tentative de tâche est une instance d'une tâche exécutée sur un
nœud esclave
 Il y aura au moins autant de tentatives de tâches qu'il y a de tâches à
effectuer

47
MapReduce over HDFS

 Chaque mappeur traite une seule entrée séparée de HDFS


 Hadoop transmet le code Map du développeur à un moment donné
 Chaque enregistrement a une clé et une valeur
 Les données intermédiaires écrites par le mappeur sur le disque local
 Pendant la phase de lecture aléatoire « shuffle » et de tri « sort », toutes
les valeurs associées à la même clé intermédiaire sont transférées vers le
même réducteur « reducer »
 Le réducteur reçoit chaque clé et une liste de toutes ses valeurs
 La sortie des réducteurs est écrite sur HDFS

48
Job execution in MapReduce framework

 Dans le framework MapReduce, l'exécution du job est contrôlée par deux


types de processus :

JobTracker TaskTracker

Un processus maître unique


Plusieurs processus subordonnés
qui :
qui exécutent les tâches
• coordonne tous les travaux
assignées et rapportent
exécutés sur le cluster et
périodiquement la progression au
• Attribue des tâches de map
JobTracker.
et de réduction à exécuter
sur TaskTrackers

49
JobTracker

 Dans Hadoop MapReduce, le JobTracker est chargé de deux


responsabilités distinctes :

Gestion des ressources de calcul Coordination de toutes les tâches


dans le cluster exécutées sur un cluster

Cela implique: Cela implique:


• maintenir la liste des nœuds • demander aux TaskTrackers de
actifs, la liste des cartes démarrer la carte et de réduire les
disponibles et occupées et tâches,
réduire les emplacements, et • contrôler l'exécution des tâches,
• allouer les créneaux disponibles • redémarrage des tâches échouées,
aux travaux et tâches appropriés • exécuter de manière spéculative
en fonction de la politique de des tâches lentes,
planification sélectionnée • calcul des valeurs totales des
compteurs de tâches, et plus
50
Hypothèse principale de MapReduce

 La tolérance aux défauts à grain fin, bien adaptée aux très gros travaux.
 Les données d'entrée et de sortie sont stockées dans un système de
fichiers (distribuées et appliquées).
 Toutes les données intermédiaires sont écrites sur le disque
 Si un nœud tombe en panne, sa tâche est réaffectée à un autre nœud par
le nœud maître.

51
Exemple
 Ci-dessous sont les données concernant la consommation électrique
d'une organisation.
 Elles contiennent la consommation électrique mensuelle et la moyenne
annuelle pour différentes années.

Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1979 23 23 2 43 24 25 26 26 26 26 25 26
1980 26 27 28 28 28 30 31 31 31 30 30 30
1981 31 32 32 32 33 34 35 36 36 34 34 34
1984 39 38 39 39 39 41 42 43 40 39 38 38
1985 38 39 39 39 39 41 41 41 00 40 39 39

 Si les données ci-dessus sont fournies en entrée, nous devons écrire des
applications pour les traiter et produire des résultats tels que trouver
l'année d'utilisation maximale, l'année d'utilisation minimale, etc.
52
Exemple
 Pensons aux données représentant la consommation électrique de toutes
les industries à grande échelle d'un pays particulier depuis l'année 1979.
 Lorsque nous écrivons des applications pour traiter de telles données en
masse,
 Elles mettront beaucoup de temps à s'exécuter.
 Il y aura un trafic réseau important lorsque nous déplacerons les données de
la source vers le serveur réseau et ainsi de suite.

 Pour résoudre ces problèmes, nous avons le framework MapReduce.


 Nous devons nous décider sur:
 La façon dont nous découpons les paires textes<Key, value> à émettre lors
de la Map appliquée à chaque donnée
 Le traitement à effectuer lors du regroupement des clés communes
(Reduce)

53
Exercice
 Le fichier d'entrée est divisé en 300 blocs et nous disposons de 30 clusters
Mapping.
 Parmi ces réponses, lesquelles sont correctes ?

 Il y aura 100 blocs qui seront donnés à chaque cluster, car dans MapReduce
les spots sont parallélisés.

 Nous ne connaissons pas la répartition en nombre des blocs sur les clusters
Mapping.

 Dès qu'un cluster a terminé son traitement, un autre bloc lui est alloué.

 Il faudra 10 vagues Map pour terminer le mappage des données.

 Il faudra 300 vagues Map pour terminer le mappage des données.

54
Exercice
 Complétez le shéma suivant:

Le processus général MapReduce pour


le comptage des mots

Car :1 Car :3
Car :1 Car :2
Car Back Moss Back :1
Moss:1
Back :1 Car :3
Back :2
Back :1 Back :2
Car Back Moss Lid :1
Lid Car Back car Lid Car Back car Car: 2 Lid:3
Moss Lid Lid Back :1
Lid:3 Moss :2
Lid:1
Lid:2
Moss :1
Moss Lid Lid Lid:2
Moss :1 Moss :2
Moss :1

55
Issues with MapReduce paradigm
 Selon IBM, le paradigme original de MapReduce présente certains
problèmes concernant :

 La gestion centralisée du flux de contrôle des tâches


 Couplage étroit d'un modèle de programmation spécifique avec l'infrastructure
de gestion des ressources
 Hadoop est maintenant utilisé pour toutes sortes de tâches au-delà de sa
conception d'origine

 Problème de scalabilité
 Problème d’utilisation des ressources
 Prise en charge de charges de travail différentes de MapReduce

56
Issues with MapReduce paradigm

 Dans Hadoop MapReduce, le JobTracker est chargé de deux


responsabilités distinctes :

Gestion des ressources de calcul Coordination de toutes les tâches


dans le cluster exécutées sur un cluster

 Dans un cadre traditionnel, le JobTracker garde une trace de :


 Des milliers de TaskTrackers
Problèmes de scalabilité
 Des centaines d'emplois
 Des dizaines et des milliers de tâches de cartographie et de réduction

 Au contraire, les TaskTrackers n'exécutent généralement qu'une dizaine


de tâches, qui leur ont été assignées par le travailleur JobTracker.

57
Hadoop
MapReduce
Common

YRAN
Presentation Resource Management
of Hadoop
HDFS
Distributed File Storage

58
 YARN: Yet Another Resource Negotiator

 L'idée fondamentale de YARN est de diviser les


fonctionnalités de gestion des ressources et de
planification/surveillance des tâches en démons
Apache séparés.

Hadoop
YARN  L'idée est d'avoir un ResourceManager (RM) global
et un ApplicationMaster (AM) par application.

 Une candidature est soit un emploi unique, soit


plusieurs emplois.

59
Présentation

 Le cadre de traitement des données est formé par ResourceManager et


NodeManager..

Le ResourceManager est l'autorité ultime qui arbitre les


ressources entre toutes les applications du système.

Le NodeManager est l'agent du framework par machine


qui est responsable des conteneurs, de la surveillance de
leur utilisation des ressources (cpu, mémoire, disque,
réseau) et du rapport au ResourceManager/Scheduler..

60
Présentation

 L’ ApplicationMaster
 est une bibliothèque spécifique au framework et
 est chargé de négocier les ressources du ResourceManager et de travailler
avec le(s) NodeManager(s) pour exécuter et surveiller les tâches.

 Le conteneur est un endroit où une application YARN est exécutée.


 Il est disponible dans chaque nœud.
 ApplicationMaster négocie le conteneur avec le planificateur (l'un des
composants de Resource Manager).
 Les conteneurs sont lancés par NodeManager.

61
Running an application in YARN

@node123 NodeManager

@node124 NodeManager

@node125 NodeManager

@node122 ResourceManager

@node126 NodeManager

62
Running an application in YARN

@node123 NodeManager

ApplicationMaster 1

Client 1
program @node124 NodeManager

@node125 NodeManager

@node122 ResourceManager

@node126 NodeManager

63
Running an application in YARN

@node123 NodeManager

ApplicationMaster 1

Client 1
program @node124 NodeManager

App1

@node125 NodeManager

@node122 ResourceManager
App1 App1

@node126 NodeManager

64
Running an application in YARN

@node123 NodeManager

ApplicationMaster 1

Client 1
program @node124 NodeManager

App1 Launch

@node125 NodeManager

@node122 ResourceManager
App1 App1

@node126 NodeManager

65
Running an application in YARN

@node123 NodeManager

ApplicationMaster 1

Client 1 Client 2
program program @node124 NodeManager
App1
ApplicationMaster 2

@node125 NodeManager
@node122 ResourceManager
App1 App1

@node126 NodeManager

66
Running an application in YARN

@node123 NodeManager

ApplicationMaster 1

Client 1 Client 2
program program @node124 NodeManager
App1
ApplicationMaster 2

Resource request
@node125 NodeManager
@node122 ResourceManager Container
App1 App1
IDs

@node126 NodeManager

67
Running an application in YARN
@node123 NodeManager
App2
ApplicationMaster 1

Client 1 Client 2
program program @node124 NodeManager
App1
ApplicationMaster 2
Launch
@node125 NodeManager
@node122 ResourceManager
App1 App1

@node126 NodeManager

App2

68
Resource Manager
 Le ResourceManager contient deux composantes principales: Scheduler
et ApplicationsManager.

 Le Scheduler est responsable de l'allocation des ressources aux


différentes applications en cours d'exécution sous réserve des contraintes
familières de capacités, files d'attente, etc.
 Le Scheduler est un ordonnanceur pur dans le sens où
 il n'effectue aucune surveillance ou suivi de l'état de l'application.
 il n'offre aucune garantie sur le redémarrage des tâches ayant échoué en
raison d'une défaillance de l'application ou de défaillances matérielles.

 Le Scheduler exécute sa fonction de planification en fonction des besoins


en ressources des applications

69
Resource Manager
 Le ResourceManager contient deux composantes principales: Scheduler
et ApplicationsManager

 Le gestionnaire d'applications ApplicationsManager est responsable de


 accepter les offres de job,
 négocier le premier conteneur pour exécuter l'ApplicationMaster spécifique
à l'application et
 fournir le service de redémarrage du conteneur ApplicationMaster en cas
d'échec.

 L'ApplicationMaster a la responsabilité de négocier les conteneurs de


ressources appropriés à partir du planificateur, de suivre leur statut et de
surveiller la progression.

70
YARN en action

71
YARN en action

 Pour exécuter une application sur YARN, un client contacte le gestionnaire


de ressources et lui demande d'exécuter un processus maître
d'application (étape 1).
 Le gestionnaire de ressources trouve alors un gestionnaire de nœuds qui
peut lancer le maître d'application dans un conteneur (étapes 2a et 2b).
 Ce que fait précisément le maître d'application une fois qu'il est en cours
d'exécution dépend de l'application.
 Il pourrait simplement exécuter un calcul dans le conteneur dans lequel il
s'exécute et renvoyer le résultat au client.
 Ou il pourrait demander plus de conteneurs aux gestionnaires de
ressources (étape 3) et les utiliser pour exécuter un calcul distribué
(étapes 4a et 4b).

72
YARN and MapReduce in action

73
Caractéristiques de YARN

Scalabilité

Hébergement mutualisé

Compatibilité

Utilisation plus élevée des clusters

Fiabilité et disponibilité

74
Caractéristiques de YARN
Scalabilité

 YARN lève le plafond de scalabilité dans Hadoop en divisant les rôles du


Hadoop Job Tracker en deux processus.
 Un ResourceManager contrôle l'accès aux ressources du cluster (mémoire,
CPU, etc.), et
 l'ApplicationManager (un par job) contrôle l'exécution des tâches.

 YARN peut s'exécuter sur des clusters plus grands que MapReduce.
 MapReduce atteint des goulots d'étranglement d'évolutivité dans la région
de 4 000 nœuds et 40 000 tâches, dus au fait que le JobTacker doit gérer à la
fois les travaux et les tâches.
 YARN surmonte ces limitations grâce à son architecture séparée
ResourceManager / ApplicationMaster : il est conçu pour évoluer jusqu'à
10000 nœuds et 100 000 tâches.

75
Caractéristiques de YARN
Hébergement mutualisé

L'hébergement mutualisé fait référence à un ensemble de fonctionnalités


qui permettent à plusieurs utilisateurs et processus métier de partager un
ensemble commun de ressources, tel qu'un cluster Apache Hadoop via une
stratégie plutôt qu'une séparation physique, sans toutefois avoir d'impact
négatif sur les accords de niveau de service, sans violer les exigences de
sécurité ou révélant même l'existence de chaque partie.
 YARN dissocie la gestion de la charge de travail Hadoop de la gestion des
ressources.
 Cela signifie que plusieurs applications peuvent partager un pool
d'infrastructure commun. Bien que cette idée ne soit pas nouvelle pour
beaucoup, elle est nouvelle pour Hadoop.

 Les versions antérieures d'Hadoop consolidaient à la fois les fonctions de


gestion de la charge de travail et des ressources dans un seul JobTracker.
 Cette approche a entraîné des limitations pour les clients souhaitant
exécuter plusieurs applications sur la même infrastructure de cluster. 76
Caractéristiques de YARN
Compatibilité

 Un objectif majeur de YARN et de l'implémentation du framework


MapReduce au-dessus de YARN était de s'assurer que les applications
MapReduce existantes qui ont été programmées et compilées avec les
API MapReduce précédentes peuvent continuer à s'exécuter avec peu ou
pas de modification sur YARN.
 Pour la grande majorité des utilisateurs qui utilisent les API MapReduce
sur YARN, cela garantit une compatibilité binaire complète.
 Ces applications existantes peuvent s'exécuter directement sur YARN sans
recompilation.
 Les fichiers .jar peuvent être utilisés à partir de l'application existante qui
code par rapport aux API mappées, et utilisez bin/hadoop pour les soumettre
directement à YARN.

Pour l'utilisateur final (un développeur, pas un administrateur), les


changements sont presque invisibles
77
Caractéristiques de YARN
Utilisation plus élevée des clusters

 Utilisation plus élevée des clusters, où les ressources non utilisées par un
framework peuvent être consommées par un autre

 Le NodeManager est une version plus générique et efficace du


TaskTracker.

 Au lieu d'avoir un nombre fixe d'emplacements de mappage et de réduction,


le NodeManager dispose d'un certain nombre de conteneurs de ressources
créés dynamiquement

 La taille d'un conteneur dépend de la quantité de ressources qui lui sont


affectées, telles que la mémoire, le processeur, le disque et les E/S réseau

78
Caractéristiques de YARN
Fiabilité et disponibilité

 Haute disponibilité pour le ResourceManager

 Une restauration de l'application est effectuée après le redémarrage de


ResourceManager
 Le ResourceManager stocke des informations sur les applications en cours
d'exécution et les tâches terminées dans HDFS
 Si le ResourceManager est redémarré, il recrée l'état des applications et ne
réexécute que les tâches incomplètes

 NameNode hautement disponible, rendant le cluster Hadoop beaucoup


plus efficace, puissant et fiable

79
Hadoop
MapReduce
Common

YRAN
Présentation Resource Management
de Hadoop
HDFS
Distributed File Storage

80
 Hadoop Common fait référence à la collection
d'utilitaires et de bibliothèques communs qui
prennent en charge d'autres modules Hadoop.

 Il s'agit d'une partie ou d'un module essentiel du


framework Apache Hadoop, avec le système de
fichiers distribué Hadoop (HDFS), Hadoop YARN et
Hadoop Hadoop MapReduce.
Commons
 Comme tous les autres modules, Hadoop Common
suppose que les pannes matérielles sont courantes
et qu'elles doivent être automatiquement gérées
dans le logiciel par Hadoop Framework.

 Hadoop Common est également connu sous le nom


de Hadoop Core.

81
 Le package Hadoop Common est considéré comme
la base/noyau du framework car il fournit des
services essentiels et des processus de base tels
que l'abstraction du système d'exploitation sous-
jacent et de son système de fichiers.

Hadoop  Hadoop Common contient également les fichiers et


Commons scripts Java Archive (JAR) nécessaires pour
démarrer Hadoop.

 Le package Hadoop Common fournit également le


code source et la documentation, ainsi qu'une
section de contribution qui inclut différents projets
de la communauté Hadoop.

82
Apache Hive

 Apache Hive est un logiciel d'entrepôt de données open source pour la


lecture, l'écriture et la gestion de fichiers volumineux d'ensembles de
données qui sont stockés directement dans le système de fichiers
distribué Apache Hadoop (HDFS) ou d'autres systèmes de stockage de
données tels que Apache HBase.

 Hive permet aux développeurs SQL d'écrire des instructions Hive Query
Language (HQL) similaires aux instructions SQL standard pour la requête
et l'analyse de données.

 Il est conçu pour faciliter la programmation MapReduce car vous n'avez


pas besoin de connaître et d'écrire un code Java long.

 Au lieu de cela, vous pouvez écrire des requêtes plus simplement en HQL,
et Hive peut ensuite créer la carte et réduire les fonctions. 83
• Diagnostic et taux de
désabonnement des clients

• Pay per view publicité


Hadoop Use
cases
• Modélisation de risque

• Analyse des sentiments

84
Diagnostic and customer churn

85
Pay per view advertising

86
Risk modeling

87
Sentiment analysis

88
Limitations de Hadoop

89
Limitations de Hadoop
 Problèmes avec les petits fichiers

 HDFS n'a pas la capacité de prendre en charge efficacement la lecture


aléatoire de petits fichiers en raison de sa conception à haute capacité.
 Un petit fichier est nettement plus petit que la taille du bloc HDFS (par
défaut 128 Mo).
 Si nous stockons un grand nombre de petits fichiers, HDFS ne peut pas
gérer autant de fichiers, car HDFS fonctionne correctement avec un petit
nombre de gros fichiers pour stocker de gros ensembles de données
plutôt qu'un grand nombre de petits fichiers.
 S'il y a trop de petits fichiers, le NameNode sera surchargé car il stocke
l'espace de noms de HDFS.

90
Limitations de Hadoop
 Vitesse réduite de traitement

 Dans Hadoop, avec un algorithme parallèle et distribué, MapReduce


traite de grands ensembles de données.
 Il y a des tâches que nous devons effectuer : Map and Reduce et
MapReduce nécessite beaucoup de temps pour effectuer ces tâches,
augmentant ainsi la latence.
 Les données sont distribuées et traitées sur le cluster dans MapReduce,
ce qui augmente le temps et réduit la vitesse de traitement.

91
Limitations de Hadoop
 Latence

 Dans Hadoop, le framework MapReduce est comparativement plus lent,


car il prend en charge différents formats, structures et énormes volumes
de données.
 Dans MapReduce, Map prend un ensemble de données et le convertit en
un autre ensemble de données, où
 les éléments individuels sont décomposés en paires clé-valeur et
 Reduce prend la sortie de la carte comme entrée et traite plus loin et
 MapReduce nécessite beaucoup de temps pour effectuer ces tâches

Ce qui augmente le temps de latence

92
Limitations de Hadoop
 Pas de traitement des données en temps réel

 Apache Hadoop est destiné au traitement par lots, ce qui signifie qu'il
prend une énorme quantité de données en entrée, les traite et produit le
résultat.
 Bien que le traitement par lots soit très efficace pour traiter un volume
élevé de données, en fonction de la taille des données traitées et de la
puissance de calcul du système, une sortie peut être considérablement
retardée.
 Hadoop n'est pas adapté au traitement de données en temps réel.

93
Limitations de Hadoop
 Pas d'itération Delta

 Hadoop n'est pas aussi efficace pour le traitement itératif, car Hadoop ne
prend pas en charge le flux itératif de données (c'est-à-dire une chaîne
d'étapes dans laquelle chaque sortie de l'étape précédente est l'entrée de
l'étape suivante).

 Pas facile à utiliser

 Dans Hadoop, les développeurs MapReduce doivent remettre du code


pour chaque opération, ce qui rend le travail très difficile.
 MapReduce n'a pas de mode interactif

94