Vous êtes sur la page 1sur 66

12/05/2024

Business Intelligence
&
Big Data

Partie II : Big data


1. Caractérisation des mégadonnées
2. Stockage et gestion des mégadonnées
3. Analyse et exploitation des mégadonnées
4. Big data dans le cloud computing

1
12/05/2024

Introduction
• Volume
• Quantité de données
• Variété
• Différents formats de données (structurées
20% ou non structurées 80%)
• Texte, CSV, XML, JSON, Binaires, BDR, etc…
• Vélocité
• Fréquente de l’arrivé des données
• Véracité
• Fiabilité et la crédibilité des données
collectées (sources fiable)
• Valeur
• Profit et la connaissance que l’on peut
extraire de ces données
• Transformer les données en valeur

2
12/05/2024

Introduction

Big Data processing

3
12/05/2024

Big Data processing

Big Data processing

4
12/05/2024

Limites des bases de données relationnelles


• En matière de stockage de données, les bases de données relationnelles restent la
référence.
• Ces outils largement utilisés garantissent le maintien des propriétés ACID (Atomicité, Cohérence,
Isolation et Durabilité).
• Pour gérer de gros volumes de données, notamment dans un contexte d’entrepôt de
données, toujours fidèle au modèle relationnel, les machines bases de données, comme
la TeradataTM, s’appuient sur une distribution des données sur différents disques
permettant une parallélisation de l’exécution des requêtes.
• Cependant ces machines ne permettent de gérer des mégadonnées au-delà d’un certain volume.
• Aussi différentes nouvelles solutions ont vu le jour. Toutes ces solutions reposent sur un
stockage distribué (partitionné) des données sur les clusters.
• Cependant, comme le théorème CAP de Brewer le démontre, aucun système distribué
ne peut assurer à la fois la cohérence, la disponibilité et la possibilité d’être partitionné.
• La conséquence est que, dans ces nouvelles solutions de stockage, il ne sera pas possible d’assurer
les propriétés ACID, et un relâchement de ces propriétés sera nécessaire

Hadoop
• Ces dernières années, le traitement des serveurs d’application a connu une évolution
exponentielle.
• D’un autre côté, les bases de données n’ont pas synchronisé avec l’explosion des serveurs
d’application à cause de leur capacité et de leur vitesse limitées.
• Aujourd'hui, suite à la génération de très grands volumes de données par les diverses
applications existantes, Hadoop joue un rôle primordial et très attendu dans la refonte
des bases de données.
• Sur le plan des activités des grandes organismes et entreprises, Hadoop prévoit plusieurs
avantages à leur propos (directs et indirects).
• Notamment, l’utilisation de la technologie open source sur des serveurs peu hébergés dans le
cloud, qui permet aux entreprises de réduire leur coûts d’exploitation et d’intégration des
données.
• Ces nombreux avantages et cette forte intégration du système Hadoop pour régler les
problématiques des données massives font de ce framework une composante principale
des systèmes Big data pour la gestion et traitement des données.

5
12/05/2024

Hadoop
High-Availability Distributed Object-Oriented Platform
• Hadoop a été créé par Doug Cutting et fait partie des projets de la
fondation logicielle Apache depuis 2009.
• L’écosystème Hadoop est un produit de la fondation Apache basé pour sa création
sur le langage java.
• Hadoop est une plateforme « framework » de référence libre et open
source destiné aux traitements distribués des données massives de l’ordre
de plusieurs pétaoctets.
• permettant d’analyser, stocker et manipuler de très grandes quantités de données.
• Hadoop est un système de gestion de données et de traitements distribués.
• À travers ses fonctionnalités avancées et performantes, Hadoop permet de
faciliter la création d’applications distribuées ce qui fait de lui un
environnement Big Data typique.

Hadoop
High-Availability Distributed Object-Oriented Platform
• Le noyau d’Hadoop est constitué :
• d’une partie stockage consistant en un système de fichiers distribué,
extensible et portable appelé HDFS (Hadoop Distributed File System),
• et d’une partie traitement appelée MapReduce.
• Hadoop fractionne les fichiers en gros blocs et les distribue à travers
les nœuds du cluster.
• Pour traiter les données 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 que dans une architecture super-calculateur classique.

6
12/05/2024

Hadoop
High-Availability Distributed Object-Oriented Platform
• Big Data façon Hadoop :
• Amener les codes de traitements aux données
• Transformer momentanément en noeuds de traitement les noeuds de
stockage des données traitées
• Eviter de déplacer des données (très volumineuses) … mais …
• les relire et les réécrire localement chaque fois que la RAM est pleine
• Principe :
• Diviser les données
• Les sauvegarder sur une collection de machines, appelées cluster
• Traiter les données directement là ou elles sont stockées, plutôt que de les
copier à partir d’un serveur distribué

7
12/05/2024

Avantages de Hadoop
• La plateforme Hadoop permet de vérifier les critères les plus
importants des solutions Big Data à savoir :
• La scalabilité : assurée par la performances délivrées des clusters de haut
niveau.
• Parallélisme des données: un même traitement et calcul peut être effectué
sur toutes les données.
• Performance : Hadoop délivre un support de traitement de grands volumes
de données et d’énormes data sets à travers le critère de parallélisme.
• Économie : les coûts lors de l’utilisation de Hadoop sont mieux contrôlés
grâce à l’utilisation de matériel de calcul de type standard.

Qui utilise Hdoop

8
12/05/2024

Hadoop
High-Availability Distributed Object-Oriented Platform

Écosystème de hadoop

9
12/05/2024

Écosystème de hadoop

Écosystème de hadoop

10
12/05/2024

Écosystème de hadoop

Écosystème de hadoop

11
12/05/2024

HDFS
Hadoop Distributed File System

12
12/05/2024

Fichiers systèmes
• Un fichier système définit les composantes essentielles au bon
fonctionnement d’un système d’exploitation donné.
• Ces fichiers système ont ainsi de diverses fonctionnalités et on en distingue
plusieurs types, à savoir :
• Les fichiers d’amorçage : ils sont localisés à la racine de la partition active et ont pour
rôle principal d’amorcer le système d’exploitation (les fichiers IO.SYS, MSDOS.SYS du
DOS).
• Les fichiers noyau : ces fichiers sont le cœur d’un système d’exploitation et sont
localisés généralement dans le répertoire système. Dans ce cas, ces fichiers
contiennent les commandes internes du système.
• Les fichiers configuration : Ces fichiers gèrent la configuration du matériel et logiciels
installés.
• Les fichiers système les plus répandus tel que : IO, MSDOD, CONIG etc …

Problématique de gestion des données


distribuées
• Dans un environnement BIG Data, la problématique qui se pose est la
nécessité de déplacer les Workers vers les données vu le volume
considérable des données que nous traitons et analysons.
• Ceci nécessite alors un stockage des données dans le disque local des nœuds dans le
cluster.
• Le gain principal de ce processus est d’éviter le trafic réseau,
• Cependant,
• dépasser la limite de la RAM qui est généralement insuffisante pour contenir toutes
les données en mémoire
• et finalement l’accès au disque qui est très lent.
• La question qui se pose est la suivante : Comment dépasser les limites
citées et réaliser le processus de distribution des données ?

13
12/05/2024

HDFS
Hadoop Distributed File System
• Le système de fichiers distribués Hadoop (HDFS) est
basé sur le système de fichiers Google (GFS) et
fournit une conception conçu pour fonctionner sur
du matériel standard.
• L'implémentation de HDFS a son origine dans un
whitepaper issu du département de recherche de Google («
The Google File System », 2003).
• Il présente de nombreuses similitudes avec les
systèmes de fichiers distribués existants.
• Cependant, les différences par rapport aux autres
systèmes de fichiers distribués sont importantes.
• Il est très tolérant aux pannes et est conçu pour être
déployé sur du matériel à faible coût.
• Il fournit un accès à haut débit aux données d'application et
convient aux applications ayant de grands ensembles de
données.

HDFS
Systèmes de Fichiers Distribués Hadoop
• HDFS est un système de fichiers distribués de Hadoop destiné principalement
pour le stockage distribué des données.
• Ce composant est distribué, tolérant aux pannes, portable, scalable et également
extensible.
• HDFS fait une analogie de nombreux concepts inspirés par d’autres systèmes de
fichiers classiques à savoir ext2, FAT ou encore NTFS.
• Par ailleurs, ce système permet une forte abstraction de l’architecture physique
de stockage dans le but de manipuler le système de fichier distribué comme un
disque dur.

14
12/05/2024

HDFS
Hadoop Distributed File System

HDFS _ Architecture
Hadoop Distributed File System

Une architecture de cluster HDFS repose sur deux composants majeurs :


○ NameNode: service de méta-données
○ DataNode: service de bloc de données

15
12/05/2024

Architecture HDFS _ NameNode


• NameNode :
• Le NameNode est le service central ou le maître qui fait la gestion de l’état du
système de fichiers.
• Cette gestion est réalisée à travers le maintien de l’arborescence des fichiers
ainsi que les métadonnées des fichiers et répertoires d’un système hadoop.
• Il stocke les informations relatives aux noms de fichiers.
• Il a une connaissance globale des DataNodes sur lesquels les blocs sont
stockés.
• C'est ce serveur qui, par exemple, va savoir que le fichier «livre_5321
» dans le répertoire « data_input » comporte 58 blocs de données, et
qui sait où ils se trouvent.
• Il y a un seul NameNode dans tout le cluster Hadoop.

Architecture HDFS _ DataNode


• DataNode :
• Le DataNode contient les blocs de données stockés à leurs niveau.
• Il existe un DataNode pour chaque machine au sein du cluster.
• Ils sont en communication constante avec le NameNode pour :
• recevoir de nouveaux blocs,
• indiquer quels blocs sont contenus sur le DataNode,
• signaler des erreurs, etc...
• Hiérarchiquement, on peut dire que les DataNodes sont sous
l’égide du NameNode, on peut également les nommer des
« Workers ».

16
12/05/2024

Architecture HDFS _ Secondary NameNode


• Secondary NameNode :
• La notion du Secondary NameNode qui a été mis en place dans la seconde
version de Hadoop
• Le but d'un Secondary NameNode dans Hadoop est d'aider le NameNode à
gérer l'espace de noms et les informations de métadonnées dans un cluster
Hadoop.
• Le Secondary NameNode n'est pas un substitut du NameNode actif et ne
prend pas en charge la haute disponibilité.
• Il fonctionne plutôt comme un assistant pour le NameNode, fournissant des
services de maintenance et de sauvegarde pour les métadonnées HDFS.

Architecture HDFS _ Secondary NameNode


• Les principales fonctions du Secondary NameNode dans Hadoop :
• Point de sauvegarde pour les métadonnées : Le Secondary NameNode sert de point de sauvegarde
pour les métadonnées de HDFS. Il récupère les informations de métadonnées du NameNode actif et les
stocke localement sur son propre disque. Cela permet de sauvegarder les métadonnées en cas de
panne du NameNode ou de corruption des données.
• Optimisation de la mémoire tampon : Le Secondary NameNode effectue également une tâche
d'optimisation de la mémoire tampon pour le NameNode. Il fusionne les fichiers de journalisation (log
files) du NameNode et crée un nouveau fichier de journalisation enregistré sur le disque du Secondary
NameNode. Cette opération permet d'optimiser l'utilisation de la mémoire tampon du NameNode et
d'éviter des problèmes de performance.
• Support pour la reconfiguration : Le Secondary NameNode peut être utilisé pour reconfigurer un cluster
Hadoop en cas de besoin. Il est possible de changer la taille du cluster, la configuration des serveurs, les
paramètres de sécurité, etc. en utilisant le Secondary NameNode comme point d'entrée pour les
modifications.
• En résumé, le Secondary NameNode est un composant important de Hadoop qui offre des
services de sauvegarde et d'optimisation pour les métadonnées HDFS. Bien qu'il ne puisse pas
remplacer le NameNode actif en cas de panne, il joue un rôle essentiel dans la maintenance et la
configuration du cluster Hadoop.

17
12/05/2024

Architecture HDFS

Architecture HDFS _ Single Point Of Failure

18
12/05/2024

Architecture HDFS _ Single Point Of Failure


• Malgré les différents avantages du NameNode, ce dernier représente
un point de défaillance dans le système Hadoop (Single Point Of
Failure (SPOF) du système).
• Si un problème provient du NameNode, il n’y a plus moyen d’extraire
les blocs d’un fichier donné.
• Une panne du NameNode actif pourrait donc rendre le système de
fichiers HDFS totalement inexploitable.
• Pour lutter contre cette faiblesse, deux mécanismes complémentaires
de tolérance aux pannes puis de haute disponibilité ont été
introduits

HDFS _ Tolérance aux pannes

• Les meta-données du NameNode


actif sont régulièrement
sauvegardées sur un système de
fichiers local (accès rapide) mais
aussi sur un système distant.

• En cas d’incident sur le NameNode


actif on pourra ainsi reconstituer le
système de fichiers d’Hadoop à
partir d’une copie distante de ses
meta-données et continuer à
exploiter ses noeuds de données.

19
12/05/2024

HDFS _ Haute disponibilité

• Il est possible de dupliquer le NameNode actif, et de


créer un NameNode standby qui reçoit et stocke en
permanence les mêmes meta-données et logs que le
NameNode actif.
• Le NameNode standby est donc lui aussi éveillé mais
n’agit pas sur les noeuds de données.
• En revanche, il est prêt à remplacer et à devenir le
NameNode actif à tout moment et quasiment sans
délai, rendant la panne presque imperceptible.
• Evidemment, cette stratégie demande une machine
supplémentaire.

HDFS
Hadoop Distributed File System

20
12/05/2024

HDFS
Hadoop Distributed File System

HDFS
Hadoop Distributed File System

21
12/05/2024

HDFS - systèmes de fichiers distribués


• ● Les fichiers sont divisés en blocs: la perte d’un seul de ces blocs causerait une
corruption du fichier
• ● Les blocs sont répliqués afin de survivre à la perte d’un ou plusieurs blocs
• ● Le Namenode tente de placer les blocs afin d’éviter la perte de toutes les copies
d’un même bloc d’un seul coup (défaillance d’un “rack” ou d’une “switch”)
• ○ “Rack-awareness”
• ● Les blocs peuvent être placés n’importe où, le client doit interroger le
Namenode pour trouver un bloc
• ● Un Namenode “stand-by” peut être déployé
• ○ Nécessite d’autres services: Journalnode
• ○ Basculement automatique: Zookeeper et “zkfc”

Architecture HDFS

● Les clients du système de


fichiers interrogent le
Namenode pour:
○ connaître la structure de
l’arbre de fichiers
○ découvrir où se trouvent les
blocs d’un fichier
● Les clients accèdent aux
données directement auprès
des Datanode

22
12/05/2024

Écriture d’un fichier sur HDFS


• Les principaux étapes exécutées lors de la procédure d’écriture d’un fichier sur
HDFS sont les suivantes :
• Stocker le fichier cible sur HDFS en utilisant la commande hadoop fs.
• Le programme va diviser le fichier en blocs de 64 Mo.
• Une requête sera lancée au NameNode pour stocker le fichier au sein de la HDFS sous un
nom donné.
• Le NameNode va ensuite indiquer au programme l’emplacement de stockage des blocs par
rapport aux DataNodes disponibles.
• Le client Hadoop va ensuite contacter directement les DataNodes nommés par le NameNode
et demander le stockage des blocs en question.
• Finalement, les DataNodes vont répliquer les données entre eux pour éviter la perte de
données sous la coordination continu du NameNode.

Écriture d’un fichier sur HDFS

23
12/05/2024

Écriture d’un fichier sur HDFS

Écriture d’un fichier sur HDFS

24
12/05/2024

Écriture d’un fichier sur HDFS

Écriture d’un fichier sur HDFS

25
12/05/2024

Lecture d’un fichier sur HDFS


• La lecture du fichier sur HDFS utilisé également le client Hadoop.
Dans cette optique, nous pouvons résumer les étapes de lecture
comme suit :
• Le client va contacter le NameNode pour lui indiquer son souhait de lecture
du fichier en question.
• Le NameNode va délivrer les informations nécessaires par rapport aux blocs
et leur emplacement au client.
• Le programme va contacter les DataNode directement et leur demandera de
transmettre les blocs souhaités.
• En cas d’absence de réponse de la part du DataNode contacté, le programme
passera à un autre DataNode selon la liste fournie par le nœud maître.

Lecture d’un fichier sur HDFS

26
12/05/2024

Lecture d’un fichier sur HDFS

Lecture d’un fichier sur HDFS

27
12/05/2024

HDFS - Hadoop Distributed File System

La commande hadoop fs
• la commande permettant de stocker ou extraire des fichiers de HDFS
est l'utilitaire console hadoop, avec l'option fs.
• Il réplique globalement les commandes systèmes standard Linux, et
est très simple à utiliser:

28
12/05/2024

MapReduce
Distributed programing framework

Problématique
• Lorsqu’on dispose d’un grand volume de données à traiter, on développe
généralement des problèmes de mémoire , d’ajout des valeurs… Le temps
de traitement est aussi long et non optimale ainsi qu’on peut avoir des
réponses erronées lors d’un traitement séquentiel.
• Pour exécuter un problème large de manière distribué, il faut pouvoir
découper le problème en plusieurs problèmes de taille réduite à exécuter
sur chaque machine du cluster (stratégie algorithmique dite du divide and
conquer / diviser pour régner).
• ● De multiples approches existent et ont existé pour cette division d'un problème en
plusieurs « sous-tâches ».
• Afin de remédier à ces problèmes, la solution efficace et rapide de
traitement de ces données est le MapReduce.

29
12/05/2024

Introduction
• ● Historiquement dominés par des systèmes haute-performance
• ○ problèmes “cpu-bound”, peu de données, calculs complexes
• ○ p. ex: MPI (message passing interface), les données sont envoyées aux
agents, le calcul effectué et les résultats retournés au “coordonnateur”
• ● Afin de traiter de très grandes quantités de données, inverser la
responsabilité: déplacer l’algorithme vers les données
• ○ “data-locality”

Localite des Donnees

• Auparavant les donnees etaient


deplacees dans une application
pour etre manipulees (SGBD, ETL,
Applications...)

• Desormais, les applications (sous


forme MapReduce) sont deplacees
vers les donnees

30
12/05/2024

Introduction
• Le modèle de programmation MapReduce est l’un des principaux
composants du framework Hadoop.
• Il est utilisé pour accéder aux données Big Data stockées au sein du
Hadoop File System (HDFS).
• ▪ L’intérêt de MapReduce est de faciliter le traitement concurrent des
données.
• Pour parvenir à cette prouesse, les volumes massifs de données, de l’ordre
de plusieurs petabytes, sont décomposés en plusieurs parties de moindres
envergures.
• Ces morceaux de données sont traités en parallèle, sur les serveurs
Hadoop.
• Après le traitement, les données en provenance des multiples serveurs
sont agrégées pour renvoyer un résultat consolidé à l’application.

MapReduce - Distributed programing


framework
• MapReduce est un paradigme (un modèle) visant à généraliser les approches
existantes pour produire une approche unique applicable à tous les problèmes.
• MapReduce existait déjà depuis longtemps, notamment dans les langages
fonctionnels (Lisp, Scheme), mais la présentation du paradigme sous une forme «
rigoureuse », généralisable à tous les problèmes et orientée calcul distribué est
attribuable à un whitepaper issu du département de recherche de Google publié
en 2004 (« MapReduce: Simplified Data Processing on Large Clusters »).
• MapReduce a été rapidement utilisé par des sociétés intervenant sur le Web et
possédant d’importants centres de traitement de données telles qu’Amazon ou
Facebook.
• Notons que MapReduce est aussi de plus en plus utilisé dans le Cloud Computing.

31
12/05/2024

MapReduce - Distributed programing framework

MapReduce - Distributed programing framework


• 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 pouvant être très
volumineuses, par exemple supérieures en taille à 1 téraoctet.
• Ainsi le modèle MapReduce permet de manipuler de grandes
quantités de données en les distribuant dans un cluster de machines
pour être traitées.
• MapReduce est un paradigme dédié pour exécuter un problème large et
complexe d’une manière distribuée.

32
12/05/2024

MapReduce - Distributed programing framework


• Il repose sur deux fonctions : « Map » et « Reduce », empruntées aux langages de programmation
fonctionnelle.
• De façon générale, la fonction Map exécutée par un nœud spécifique, analyse un
problème, le découpe en sous-problèmes, et ensuite délègue la résolution de ces sous-
problèmes à d’autres nœuds de traitements pour être traités en parallèle, ceci à l’aide de
la fonction Reduce. Ces nœuds font ensuite remonter leurs résultats au nœud qui les
avait sollicités.
• L’opération MAP : qui transforme les données d’entrée en couples (clé,
valeur).
• ○ map - transformation des données en paires de clé-valeur
• L’opération REDUCE : qui applique un traitement aux valeurs des clés en
sortie de l’opération MAP pour avoir en fin de compte un résultat pour
chacune des clefs distincts.
• ○ reduce - opération d'agrégation (somme, moyenne, etc.) par clé

MapReduce - Distributed programing


framework _ MAP
• Elle 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.
• Par ailleurs, 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.

33
12/05/2024

MapReduce - Distributed programing


framework _ Reduce
• Elle va appliquer un traitement à
toutes les valeurs de 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.

Algorithmes distribués
MapReduce _ Exemple
• Soient les 4 n-uplets fictifs suivants :
• Calculer le prix maximal, moyen ou total?
• FonctionM est une fonction de correspondance
• extrait le prix d’une voiture,

• FonctionR est une fonction de regroupement (agrégation)


• calcule le max d’un ensemble de valeurs

34
12/05/2024

Algorithmes distribués
MapReduce _ Exemple
Le but est de recueillir une information synthétique à partir d’un jeu de données.

• L’écriture 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.
• Ce résultat contient autant de valeurs
que dans la liste d’entrée.
• La fonction reduce(fonction, liste)
agglomère les valeurs de la liste par
la fonction et retourne le résultat
final.

Algorithmes distribués
MapReduce _ Exemple • Parallélisation de Reduce
• Parallélisation de Map • La fonction reduce se parallélise partiellement,
• La fonction map est par nature parallélisable, sous une forme hiérarchique,
car les calculs sont indépendants. • Exemple :
• Exemple, pour 4 éléments à traiter : • inter1 et 2 = FonctionR(valeur1, valeur2)
• inter3 et 4 = FonctionR(valeur3, valeur4)
• valeur1 = FonctionM(element1)
• resultat = FonctionR(inter1 et 2, inter3 et 4)
• valeur2 = FonctionM(element2)
• valeur3 = FonctionM(element3) • Seuls les deux premiers calculs peuvent être
• valeur4 = FonctionM(element4) faits simultanément. Le 3e doit attendre. S’il y
• Les quatre calculs peuvent se faire avait davantage de valeurs, on procéderait
simultanément, par exemple sur 4 machines ainsi:
• 1. calcul parallèle de la FonctionR sur toutes les paires
différentes, à condition que les données y de valeurs issues du map
soient copiées. • 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.

35
12/05/2024

Algorithmes distribués
MapReduce _ Exemple

La fonction map
• Les données d’input sont décomposées en blocs de moindre envergure.
• Chacun de ces blocs est assigné à un » mapper » pour le traitement.
• Prenons l’exemple d’un fichier contenant 100 enregistrements à traiter.
• Il est possible d’utiliser 100 mappers simultanément pour traiter chaque
enregistrement séparément.
• Toutefois, on peut aussi confier plusieurs enregistrements à chaque mapper.
• En réalité, le framework Hadoop se charge de décider automatiquement
combien de mappers utiliser.
• Ce choix dépend de la taille des données à traiter et des blocs de mémoire
disponibles sur chaque serveur.
• La fonction Map reçoit l’input à partir du disque sous forme de paires «
clé/valeur » . Ces paires sont traitées, et un autre ensemble de clé/valeur
intermédiaire est produit.

36
12/05/2024

La fonction reduce
• ▪ Après que tous les mappers aient terminé leurs tâches de traitement, le
framework mélange et organise les résultats.
• Il les transmet ensuite aux « reducers » .
• Précisons qu’un reducer ne peut démarrer si un mapper est encore actif.
• La fonction Reduce reçoit aussi les inputs sous forme de paires clé/valeur.
Toutes les valeurs produites par map ayant la même clé sont assignées à un
reducer unique. Celui-ci se charge d’agréger les valeurs pour cette clé.
• Reduce produit ensuite un ouput final, toujours sous forme de paie clé/valeur.
• Toutefois, le type de clés et de valeurs varie selon les cas d’usage. Tous les
inputs et outputs sont stockés dans le HDFS.
• Précisons que la fonction map est impérative pour filtrer et trier les données
initiales. En revanche, la fonction reduce est optionnelle.

Étapes d’un traitement MapReduce


• On distingue principalement 4 étapes dans un traitement
MapReduce :
• Split (Découper): Qui découpe les données d’entrée en des
fragments.
• Map : Obtenir les couples (clef, valeur) pour chaque fragment
découpé.
• Shuffle (Grouper): Groupe les couples (clef, valeur) par clef.
• Reduce (Réduire): Indexer les groupes par clefs avec une valeur
pour chaque clé distinct.

37
12/05/2024

Modèle de programmation MapReduce


● Map
– Map, Shuffle, Reduce • – <k, v> -> <k2, v2>
• – Application d'une fonction sur chaque
donnée de départ
• – k et k2 : pas nécessairement dans le
même espace, ni le même nombre
● Shuffle
• – Tri des résultats par clef
• – i.e. on regroupe les v2 qui ont la même k2
● Reduce
• – Application d'une fonction de réduction
sur tous les groupes <k2, v2>

MapReduce _ 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
• ▪Tout est représenté ainsi.
• Par 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)
• C’est cette notion qui rend les programmes assez étranges au début :
les deux fonctions Mapet Reduce reçoivent des paires (clé, valeur) et
émettent d’autres paires, selon les besoins de l’algorithme.

38
12/05/2024

MapReduce – Exemple
Compter les occurrences des mots d'une collection de documents
• ● Entrée : < nom, contenu >
• ● Map : pour chaque mot du contenu -> <mot, 1>
• ● Shuffle : regroupe tous les <mot, 1> pour un mot donné
• ● Reduce : <mot, nombre> -> <mot, total>
• ● Sortie : collection de <mot, occurrences>

MapReduce _ Exemple

39
12/05/2024

MapReduce _ Exemple

MapReduce – Exemple
• ● Déterminer les documents pointant vers une URL
• – Résolution inverse de liens
• ● Entrée : collection de < URL, contenu >
• ● Map : pour chaque lien du contenu -> < URL lien, URL source>
• ● Shuffle : regroupe tous les <URL lien, URL source> pour une URL
donnée
• ● Reduce : <URL lien, URL source> -> <URL lien, liste de sources>
• ● Sortie : collection de <URL, liste de sources>

40
12/05/2024

Exemple
• Une entreprise de téléphonie veut calculer la durée totale des appels téléphoniques d’un
abonné à partir d’un fichier CSV contenant tous les appels de tous les abonnés (n°
d’abonné, n° appelé, date, durée d’appel). Ce problème se traite ainsi :
• 1. En entrée, on a le fichier des appels (1 appel par ligne)
• 2. lancer une instance de la fonction Map par appel
• 3. Chaque instance de Map reçoit une paire (offset, ligne) et produit une paire (n° abonné,
durée) ou rien si c’est pas l’abonné qu’on veut. NB: l’offset ne sert à rien ici.
• 4. Envoyer toutes les paires vers une seule instance de Reduce (car il n’y a qu’une seule
clé différente)
• 5. L’instance de Reduce additionne toutes les valeurs des paires qu’elle reçoit et produit
une seule paire en sortie (n° abonné, durée totale)

Étapes d’un traitement MapReduce

Pour résoudre un problème via la


méthodologie MapReduce avec Hadoop,
on devra donc:
● Choisir une manière de découper les
données d'entrée de telle sorte que
l'opération MAP soit parallélisable.
● Définir quelle CLEF utiliser pour notre
problème.
● Écrire le programme pour l'opération MAP.
● Ecrire le programme pour l'opération
REDUCE.

41
12/05/2024

Techniques - algorithmes distribués


MapReduce

Patrons de récapitulation (summarization)


Comptage d’occurrences de termes

42
12/05/2024

Patrons de récapitulation
(summarization)
calcul de moyennes

Etapes complètes d’une chaîne Map-Reduce


d’Hadoop

43
12/05/2024

Comment fonctionne MapReduce


• Hadoopdivise le travail en tâches. Il existe deux types de tâches :
• •Les tâches de Map(Splits& Mapping)
• •Les tâches de réduction (Shuffling, Reducing)

• Le processus d'exécution complet (exécution des tâches Mapet Reduce, ou les


deux) est contrôlé par deux types d'entités appelées : Jobtracker et TaskTrackers
• Jobtracker: Il agit comme un maître (responsable de l'exécution complète de la
tâche soumise).
• Plusieurs TaskTrackers: Agissent comme des esclaves, chacun d'entre eux
exécutant la tâche.
• Pour chaque tâche soumise pour exécution dans le système, il y a un
Jobtrackerqui réside sur Namenode et il y a plusieurs TaskTrackers qui résident
sur Datanode.

Hadoop MapReduce – Architecture

44
12/05/2024

Hadoop MapReduce – Déroulement


• ● Le Client soumet un job au JobTracker
• ● Le JobTracker interroge le NameNode pour
localiser les données
• ● Le JobTracker localise des TaskTracker près
des données
• ● Le JobTracker soumet des tâches aux
TaskTrackers
• ● Le TaskTracker notifie la terminaison au
JobTracker
• ● Le Client polle le JobTracker pour avoir l'état
de son job

Hadoop MapReduce – Déroulement

45
12/05/2024

Mise en oeuvre dans Hadoop


• La programmation d’un job MapReduce en Java. Il faut définir trois classes :
• Une sous-classe de Mapper. Elle contient une seule méthode, appelée mapqui reçoit
une paire clé-valeur en paramètre. Elle génère un nombre quelconque de paires.
• Une sous-classe de Reducer. Elle contient également une seule méthode, appelée
reducequi reçoit une liste de paires en paramètre. Elle génère une seule paire.
• Une classe générale qui crée un Job faisant référence aux deux précédentes classes.

• Les deux premières sont des patrons (templates) paramétrées par les types
des clés et des valeurs

Mise en oeuvre dans Hadoop


Le Mapper

46
12/05/2024

Mise en oeuvre dans Hadoop

• Les types Text, IntWritable. . . sont des implémentations d’une


interface appelée Writable. Cette interface comprend:
• Un constructeur. On peut mettre la valeur initiale en paramètre.
IntWritableval= new IntWritable(34);
• Un modificateur : voidset(nouvelle valeur);
val.set(35);
• Un accesseur: type get()
int v = val.get();

Mise en oeuvre dans Hadoop


Interface Writable
• Elle permet la sérialisation, c’est à dire l’écriture d’une structure de
données sous forme d’octets et l’opération inverse, la désérialisation qui
permet de reconstruire une structure de données à partir d’octets.
• ▪La sérialisation est nécessaire pour échanger des données entre machines.
Cela fait partie de la technique appelée RemoteProcedureCall (RPC). On ne
peut pas simplement échanger les octets internes car les machines du
cluster ne sont pas obligatoirement toutes pareilles : nombre d’octets,
ordredes octets. . .
• ▪Cette interface n’est pas limitée à des types simples mais peut gérer des
collections (tableaux, listes, dictionnaires. . . ) et classes.

47
12/05/2024

Mise en oeuvre dans Hadoop


Classe Text

• La classe Textpermet de représenter n’importe quelle chaîne. Elle


possède quelques méthodes à connaître:
String toString() extrait la chaîne Java
intgetLength() retourne la longueur de la chaîne
intcharAt(intposition) retourne le code UTF8 (appelé point) du
caractère présent à cette position
• Ces méthodes ne sont pas suffisantes. Il faudra souvent convertir les
Texten chaînes,

Mise en oeuvre dans Hadoop


Reducer

48
12/05/2024

Mise en oeuvre dans Hadoop


Reducer
• La méthode reduce reçoit une collection de valeurs venant du
Mapper. CleIet ValeursI sont les clés et valeurs intermédiaires. Il faut
itérer sur chacune pour produire la valeur de sortie du réducteur.
• Comme pour map, la classe est paramétrée par les types des clés et
des valeurs à manipuler. Ce sont des Writable : Text, IntWritable. . .
• Une chose cruciale n’est pas du tout vérifiée par Java : il est
obligatoire que les types des clés TypCleI et valeurs d’entrée TypValI
du réducteur soient exactement les mêmes que les types des clés et
valeurs de sortie du mapper. Si vous mettez des types différents, ça
passera à la compilation mais plantera à l’exécution

Mise en oeuvre dans Hadoop


Traitement

49
12/05/2024

Mise en oeuvre dans Hadoop


Traitement (run)

Mise en oeuvre dans Hadoop


Traitement (run)
• La méthode run est chargée de créer et lancer un Job. Il faut noter
que la spécification Hadoop a beaucoup changé depuis les premières
versions. Il faut actuellement faire ainsi :
• Obtenir une instance de Configuration. Elle contient les options telles que les
formats des fichiers, leur nom HDFS complet, leur codec de compression. . .
• Créer un Job, lui indiquer les classes concernées : mapper et reducer.
• Fournir les noms complets des fichiers à traiter et à produire.
• Indiquer les types des clés et valeurs. Par défaut, ce sont des Text.
• Attendre la fin du job et retourner un code d’erreur

50
12/05/2024

Mise en oeuvre dans Hadoop


Compilation et lancement de traitement

Exemple
● WordCount
– dénombrement des occurrences des mots
● Les k et v des <k, v> doivent être Writable
pour être sérialisable par Hadoop
● Les clef (k) doivent être
WritableComparable pour le tri lors du
Shuffle

51
12/05/2024

Exemple – Map
● WordCount Map : génère une paire <word, 1> pour chaque mot

Exemple – Reduce

● WordCount Reduce : génère un total <word, n> pour chaque mot

52
12/05/2024

Exemple – Assemblage du Job


● Classes pour :
– Input,Output : classes de sérialisation, chemin
– Map et Reduce
– Optionel : class Combiner
● Reduce localement sur chaque noeud avant le Shuffle

Interface REST
● Monitoring de jobs
● Exemple :

53
12/05/2024

Déploiement d’un Map-Reduce en Hadoop


• Une chaîne de traitement Map-
Reduce se déploie sous la forme
d’un ensemble de tâches sur un
ensemble de noeuds de
données transformés
momentanément en noeuds de
calculs.
• Dans le cas d’une implantation
en Java, les tâches sont souvent
des JVM.
Exemple de déploiement d’un Map-Reduce d’Hadoop sur 5 noeuds, avec 2
tâches Mapper actives au maximum en même temps sur chaque noeud, et 2
tâches Reducer

Déploiement d’un Map-Reduce en Hadoop


_Taches Mapper

54
12/05/2024

Déploiement d’un Map-Reduce en Hadoop


_ Taches Mapper
• En HDFS chaque fichier est stocké sous forme de blocs répartis sur
différents noeuds de donnés, et Hadoop lance une tâche Mapper par
bloc lors d’un Map-Reduce.
• Le nombre de tâches Mapper exécutées au total dépend donc de la
taille des fichiers lus et de la taille des blocs d’HDFS (taille
configurable).
• En revanche, le nombre maximum de tâches Mapper actives
simultanément sur un même noeud peut être spécifié, et doit
dépendre de la puissance du noeuds en capacité de traitement, en
mémoire et en bande passante disque.

Déploiement d’un Map-Reduce en Hadoop


_ Exemple
• Un fichier de 2Go stocké en HDFS avec des blocs de 64Mo sera
décomposé en 32 blocs, et mènera donc à exécuter 32 tâches
Mapper.
• Or plusieurs de ces blocs de données, et donc de ces Mappers,
pourraient être localisés sur la même machine.

• Si on imagine avoir des machines avec seulement 2 coeurs on


spécifiera de n’exécuter simultanément que 2 tâches Mapper par
noeud, et Hadoop ordonnancera ses Mapper en conséquence.

55
12/05/2024

Déploiement d’un Map-Reduce en Hadoop


_ Taches Reducer

Déploiement d’un Map-Reduce en Hadoop


_ Taches Reducer
• Le nombre de tâches Reducer peut en revanche être clairement imposé à
Hadoop.
• Attention toutefois à ne pas en imposer plus qu’il n’y aura de clés de sorties
différentes, ni à en imposer trop peu.
• Déployer un seul Reducer signifie qu’une seule machine recevra toutes les
paires clé valeurs de sortie des Mapper.
• Cela risque de saturer cette machine, et de ralentir les traitements en
séquentialisant l’étape de Reduce.
• Chaque tâche Reduce va successivement recevoir les données provenant
des Mapper, les agréger en regroupant celles ayant la même clé, puis
appliquer la fonction reduce sur chaque liste de valeurs de même clé.
Enfin, elle stockera sur disque ses paires clé-valeur de sortie.

56
12/05/2024

Gestion des ressources


• Hadoop v1
• Hadoop v2 (YARN)

Hadoop 1

57
12/05/2024

MapReduce _ Gestion de ressources


d’Hadoop - version 1

Gestion de ressources d’Hadoop - version 1


• Comme lors des lectures et écritures de fichiers HDFS, le programme client
crée un objet local agissant comme un stub ou proxy.
• Cette fois-ci il s’agit d’un objet de la classe Job, à partir duquel le
programme client configure, lance et attend la fin d’une opération
complète de Map-Reduce.
• Le stub masque encore une fois la complexité réelle de l’interaction avec le
système de fichiers HDFS, mais aussi avec le gestionnaire et allocateur de
ressources qu’est le JobTracker.
• Ce dernier décide quels noeuds choisir (parmi ceux éligibles) pour héberger
les processus Mappers et Reducers, et assure ensuite le monitoring et la
gestion des processus lancés.

58
12/05/2024

Gestion des ressources v1

Gestion des ressources v1


Lorsqu'un client Hadoop soumet un job pour exécution :
• Le JobTracker demande au NameNode où se trouvent les blocs
correspondants aux noms de fichiers donné par le client.
• Le job tracker détermine quels sont les noeuds les plus appropriés
pour exécuter les traitements en tenant compte de leur Co-
localisation ou proximité.
• Le Job Tracker envoie au Task Tracker sélectionné le travail à effectuer.
• Exécution des tâches Map et Reduce.

59
12/05/2024

Gestion des ressources v1

Gestion des ressources v1

60
12/05/2024

Limitation du Map-Reduce d’Hadoop version 1


• Le JobTracker doit gérer tous les jobs en cours d’exécution, en plus de
choisir les ressources des nouveaux jobs soumis.
• Au final, le JobTracker constitue un goulot d’étranglement quand la
taille du cluster et le nombre de jobs augmentent.
• Une seconde version d’Hadoop a donc été développée avec une
couche plus évoluée de gestion des applications distribuées.

Map-Reduce d’Hadoop version 2


• La version 1 est limitée pour des clusters Hadoop avec plusieurs milliers de
noeuds → Nécessité de disposer d’un nouvel environnement qui permet :
• d’éviter un goulot d’étranglement au niveau du JobTracker qui gère toutes les tâches en cours
d’exécution et centralise leurs informations de monitoring, afin de renforcer la capacité de passage à
l’échelle,
• de supporter l’exécution d’autres types d’applications distribuées qu’uniquement des MapReduce, donc
de pouvoir déployer des gestionnaires d’applications variés.
• En 2010 Yahoo ! a démarré le développement d’une nouvelle couche d’exécution
et de contrôle des applications Hadoop au dessus d’HDFS. Cette version fut
appelé YARN : Yet Another Resource Negotiator.
• •Elle distingue clairement :
• les fonctionnalités de gestion et d’allocation de ressources de calculs, c’est-à-dire l’identification des
noeuds de données qui hébergeront les traitements,
• les fonctionnalités de lancement et de monitoring des tâches d’une application distribuée, sur les
ressources allouées.

61
12/05/2024

Hadoop versions

YARN : Yet Another Resource Negotiator


• Cette technologie est devenue un sous-projet de Apache Hadoop en 2012,
et a été ajoutée comme une fonctionnalité clé de Hadoop avec la mise à
jour 2.0 déployée en 2013.
• Avant l’ajout de YARN, Hadoop ne pouvait exécuter que des applications MapReduce.
• YARN a donc beaucoup augmenté les cas d’usage potentiels du framework.
En découplant la gestion des ressources et la planification du composant
de traitement de données de MapReduce, YARN a également permis à
Hadoop de prendre en charge davantage d’applications et de types de
traitement différents.
• Par exemple, les clusters Hadoop sont maintenant en mesure de lancer des
applications d’analyse en temps réel, de streaming data et requêtes
interactives sur Apache Spark tout en laissant tourner MapReduce.

62
12/05/2024

YARN : Yet Another Resource Negotiator


• YARN combine un gestionnaire de ressources centrale avec des containers, des
coordinateurs d’application et des agents chargés de surveiller les opérations de
traitement des différents nœuds de clusters.
• YARN est en mesure d’allouer les ressources aux applications de façon dynamique
en fonction de leurs besoins.
• Ce composant d’Hadoop propose par ailleurs plusieurs méthodes de
planification : FIFO Scheduler, FairScheduler, ou encore CapacityScheduler.
• En outre,la fonctionnalité Reservation System permet aux utilisateurs de réserver
des ressources de cluster en avance afin de s’assurer queles tâches de traitement
importantes soient exécutées sans encombre.
• Une autre fonctionnalité notable, ajoutée avec Hadoop 3.0,est YARN Federation.
Celle-ci permet d’augmenter le nombre de noeudsqu’une seule implémentation
de YARN peut prendre en charge en connectant différents » subclusters» équipés
de leurs propres managers de ressources.

YARN : Yet Another Resource Negotiator


• YARN est constitué de plusieurs composants principaux. Le gestionnaire de
ressources global (ResourceManager) a pour rôle d’accepter les tâches soumises
par les utilisateurs, de programmer les tâches et de leur allouer des ressources.
• Sur chaque noeud, on retrouve un NodeManager dont le rôle de surveiller et de
rapporter au ResourceManager. On retrouve par ailleurs un ApplicationMaster,
créé pour chaque application, chargé de négocier les ressources et de travailler
conjointement avec le NodeManager pour exécuter et surveiller les tâches.
• Enfin, les containers de ressources sont contrôlés par les NodeManagers et
assigne les ressources allouées aux applications individuelles. Généralement, les
containers YARN sont organisés en nœuds et programmés pour exécuter des
tâches uniquement si des ressources sont disponibles pour ce faire. Sous Hadoop
3.0, il est toute fois possible de créer des »container sopport unistes » pouvant
être placés en attente jusqu’à ce que des ressources soient libérées. Ce concept
permet d’optimiser l’usage des ressources.

63
12/05/2024

Hadoop 2

•Comparé à la version 1, le
JobTracker et les TaskTrackers
disparaissent, au profit d’un
ResourceManager et de
plusieurs NodeManager.

Gestion des ressources v2 (YARN)

64
12/05/2024

Gestion des ressources v2 (YARN)

Gestion des ressources v2 (YARN)

65
12/05/2024

Conclusion

• En un temps restreint, Hadoop a su s'imposer dans le secteur des


technologies de l’informatique en facilitant le processus de traitement
, intégration et analyse des données massives.
• Dans ce contexte, Hadoop a une panoplie d’applications dans divers
domaines tel que la détection des fraudes bancaires, le suivi de flux
de données des clics des utilisateurs ainsi que le suivi de
géolocalisation et les données des machines et capteurs.
• Aujourd’hui, avec de plus en plus de données à capturer et à analyser,
Hadoop, doté de ses compétences, continue à répondre à cette
évolution des données et aux besoins de ses utilisateurs.

Merci

66

Vous aimerez peut-être aussi