SlideShare une entreprise Scribd logo
Cours : Big DATA
--Chapitre 2 : Traitement des données massives avec Hadoop--
2022-2023 Asma KERKENI asma.kerkeni@gmail.com
Institut Supérieur d'Informatique et Mathématiques
Monastir
Mastère Professionnel en Génie Logiciel– Niveau 2
Licence Génie Logiciel et Système d’information– Niveau 3




 ‐

2
BigData
3
BigData
5




 ‐


BigData
6
BigData et NOSQL– MP2
7
 Dans un centre de données, les serveurs sont empilés dans des baies (Rack)
équipées pour leur fournir l’alimentation, la connexion réseau vers la grappe de
serveur, la ventilation.
 Une baie contient environ 40 serveurs. Un centre de données contient quelques
centaines de baies. Ordre de grandeur : quelques milliers de serveurs par centre.
 Combien des centres chez Google, Facebook, Amazon ... ? Des millions de serveurs.
Data Center
BigData
Classique:
Ramener les données au serveur pour les
traiter
Big Data
Amener les codes de traitements aux
données
 ‐

BigData
11




BigData
12
BigData
 C’est la capacité d'un système à gérer des quantités croissantes de
données, sans diminution significative de ses performances
Plus facile de maintenir une seule machine.
Control centralisé sur les données et les
calculs.
Mise à niveau illimitée de la puissance de
calcul d'un système
Tolérance aux pannes
13
14




BigData
15








BigData
21
BigData
22
 Le système de fichiers distribués Hadoop (HDFS) est basé sur le système de fichiers Google
(GFS).
 Il fournit un système de fichiers distribué conçu pour fonctionner sur du matériel standard et
présente de nombreuses similitudes avec les systèmes de fichiers distribués existants avec
certaines différences.
NB: La liste présentée ci-dessus n’est pas exhaustive!
 Il est hautement tolérant
aux pannes et est conçu
pour être déployé sur du
matériel à faible coût.
23
 MapReduce est un modèle de programmation parallèle pour l'écriture d'applications distribuées
conçu par Google.
 Permet un traitement efficace de grandes quantités de données (plusieurs téraoctets) sur des
grappes étendues (des milliers de nœuds) de matériel standard de manière fiable et tolérante aux
pannes.
NB: La liste présentée ci-dessus n’est pas exhaustive!
24
 Plusieurs outils existent pour permettre:
 L’extraction et le stockage des données de/sur HDFS
 La simplification des opérations de traitement sur ces
données
 La gestion et coordination de la plateforme
 Le monitoring du cluster
NB: La liste présentée ci-dessus n’est pas exhaustive!
29
30




BigData

 Quand un fichier mydata.txt est enregistré dans HDFS, il est décomposé
en grands blocs chaque bloc ayant un nom unique: blk_1, blk_2…
Les fichiers sont physiquement
(64 Mo: Hadoop 1.x et 128 Mo (Hadoop 2.x) ) pour optimiser les temps
de transfert et d'accès
Ces blocs sont ensuite sur plusieurs machines, permettant ainsi de traiter
.
Cela permet aussi de ne pas être limité par d'une
seule machine pour au contraire tirer parti de tout l'espace disponible du
cluster de machines ;

BigData
35
 Le nœud maitre appelé contient et stocke tous les et
ainsi que dans le cluster ( ).
 Une autre machine, appelée fait des
pour le compte du (Ce un helper).
 Les autres nœuds, , sont les nœuds de stockage. Ce sont les qui
ont pour rôle (création, suppression et
réplication de blocs) sur instruction du namenode.
 Le fonctionnement de HDFS est assuré par 3 types de démons: ,
et .
BigData

36
BigData et NOSQL– MP2
45

 Démon s’exécutant sur une machine séparée,
 Contient des métadonnées, pas de données user,
 Permet de retrouver les nœuds qui exécutent les blocs d’un fichier
 Cordonne l’accès aux données dans le système de fichiers.
 La responsabilité principale d’un Namenode est de stocker le namespace
de HDFS :
• L’ arborescence des répertoires
• Les permissions des fichiers
• Le mapping des fichiers aux blocs
 Ces données sont stockées dans deux structures : et
NameNode
BigData
DataNade
47
 Démon esclave qui s'exécute sur chaque machine
esclave.
 Il stocke les données réelles.
 Exécute les demandes de lecture et d’écriture de bas
niveau des clients du système de fichiers.
 Il y a un DataNode au sein du cluster.
 Les Datanodes sont sous les ordres du Namenode et sont
surnommés les .
 Ils sont donc sollicités par les Namenodes lors des opérations de
lecture et d'écriture!

BigData
48
 Hadoop réplique chaque bloc 3 fois (par défaut)
 Concept de
 2 copies de chaque bloc se trouvent dans deux nœuds de
données distincts du même rack afin de réduire la latence,
 La troisième copie est placée sur un autre rack pour
améliorer la redondance et la disponibilité.
 Si le nœud est en panne, le NN le détecte, et s’occupe de répliquer
encore les blocs qui y étaient hébergés pour avoir toujours 3 copies
stockées

BigData
49
 Ne jamais perdre toutes les données si tout le rack tombe en panne.
 Gardez les flux volumineux dans le rack lorsque cela est possible.
 Répartition basée sur l’hypothèse que dans le rack la bande passante est meuilleure et la latence
est faible.

BigData
write
I would like to
write file.txt
64Mo
BlockB
Ok, use DN1 and
DN3
64Mo
BlockB
B
File1.txt
BigData
read
I would like to read
file1.txt
64Mo
BlockB
Ok, 3 blocks:
A: DN1, DN2
B: DN1, DN3
C: DN2, DN3
64Mo
BlockB
B
B
File1.txt
BigData
52




BigData
58
 Il y a deux possibilités pour manipuler HDFS :
 Soit via l'API Java
 Soit directement depuis un terminal via les commandes
$ hdfs dfs <commande hdfs="" /> $ hadoop fs <commande HDFS>
En particulier, les commandes principales sont :
hdfs dfs –ls #listing home dir
hdfs dfs –ls /user #listing user dir…
hdfs dfs -mv <src><dst> #Moves files from source to destination.
hdfs dfs –du –h /user #space used
hdfs dfs –mkdir newdir #creating dir
hdfs dfs –put myfile.csv . #storing a file on HDFS
hdfs dfs –get myfile.csv . #getting a file from HDFS
hdfs dfs –cat myfile.csv . #edit a file from HDFS
BigData
59
BigData

 Fait l’itération d’une fonction sur une liste d’éléments
 Applique la fonction sur les résultats précédents et l’élément courant
( ,[0,1,2,3,4,5])=[0,1,4,9,16,25]
 Reduce/fold
( ,[0,1,2,3,4,5])=(((((0+1)+2)+3)+4)+5)=15
 Retourne un et un seul résultat,
 Applique une fonction sur chaque élément d’une liste
 Retourne une liste de résultats
 Map(f(x),X[1:n]) à [f(X[1]),...,f(X[n])]
BigData
64
BigData et NOSQL– MP2 BigData
65
Approche traditionnelle
BigData
66
 Approche Big Data
BigData
67
 Etape 1: MAP
 Faire des petits traitements en parallèle ligne par ligne: Pas d’opérations de calculs entre
plusieurs lignes.
 2 Types de filtrage dans cet exemple:
• diminuer le nombre de colonnes: nom magasin, valeur des ventes .
• : supprimer les lignes non concernées (année autre que 2018).
BigData
68
 Etape 2: Sort and Shuffle
 Etape faite automatiquement par Hadoop, composée de deux sous étapes:
• Rassemblement des données dans la même machine
• Tri par clé pour regrouper les ventes de même magasin successivement
BigData
69
 Etape 3: Reduce
 Comme le mapper, le code de reducer doit être écrit par l’utilisateur
 Ici; faire la somme des ventes par magasin.
BigData
v2
k2
k v
k v
v1
k1
vn
kn
…
k v
…
k v
 Dans l'étape le but est de partir d'un couple <clé, valeur> et d'y associé de nouveaux
couples <clé, valeur>. Les clés en entrée sont différentes des clés produites par le Map.
 Le nombre de tâches Map ne dépend pas du nombre de nœuds, mais du nombre de blocs
de données en entrée. Chaque bloc se fait assigner une seule tâche Map. BigData
k v
k v
k v
k v
k v
k v
k v v
v v
(~SQL Group by)

BigData
k v
k v
k v
k v
k v v
v v
~ SQL aggregation
k v
 Dans l'étape le but est d'associer toutes les valeurs correspondantes à la même clé. On souhaite donc
rassembler tous les couples <clé, valeur>.
 Pour le traitement, les taches Reduce suivent le même schéma que les taches Map.
 Elles n'ont pas à s'exécuter parallèlement et dès qu'un nœud fini son traitement un autre lui est aussitôt
assigné. BigData
76
 Word Count: Comptage des occurrences des mots
BigData
77

BigData
78
BigData
79
BigData
80

BigData
81

BigData
82
BigData et NOSQL– MP2

BigData
83

BigData
84

BigData
85

BigData
86

BigData
87


S’exécute sur la même machine que le Namenode (machine master)
Divise le travail sur les Mappers et Reducers s’exécutant sur les différents
nœuds.

S’exécute sur chacun des nœuds pour exécuter les vraies tâches de Map-
Reduce.
Choisit de traiter (map et reduce) un bloc sur la même machine que lui
affecté
S’il est déjà occupé, la tâche revient à un autre tracker qui utilisera le réseau
(rare).
BigData
88
 Un job Map-Reduce est divisé en plusieurs tâches et
 Chaque tâche est exécutée sur un nœud du cluster
 Un slot est une unité d’exécution qui représente la capacité du Task Tracker à
exécuter une tâche (map ou reduce) individuellement, à un moment donné.
• D’allouer les ressources (mémoire, CPU…) aux différentes tâches
• De coordonner l’exécution des jobs Map-Reduce
• De réserver et ordonnancer les slots, et de gérer les fautes en réallouant les slots
au besoin.

 Chaque nœud a un certain nombre de slots prédéfinis (Map Slots+ Reduce Slots).
BigData
Job Tracker
Resources allocation – scheduling - monitoring
Task Tracker Task Tracker Task Tracker
Client Client
Map task Map task
Map task Map task
Reduce task
Assign tasks
Periodic reports
BigData
90
BigData
91


 Problème d’exploitation: si on a plusieurs map jobs à exécuter, et que les map slots sont
pleins, les reduce slots ne peuvent pas être utilisés, et vice-versa

 Problème de scalabilité et de goulot d'étranglement : les nombreux datanodes existants ne
sont pas exploités: max de 5000 noeuds et 40,000 tasks s’executant simultanément (yahoo).
 Problème de disponibilité: SPoF (single point of failure)

 Problème d’interoperabilité: impossible d’exécuter des applications non-MR sur HDFS
BigData
92




BigData et NOSQL– MP2
BigData
93




BigData
94







BigData
95







 BigData
Job Tracker
Resources allocation – scheduling - monitoring
Task Tracker Task Tracker Task Tracker
Client Client
Map task Map task
Map task Map task
Reduce task
Resources Manager
Application
Master
Application
Master
container
Node Manager Node Manager
Node Manager
container
container
container
Assign tasks
Periodic reports
Node status
Request resources
MapReduce status
Yarn=Cerveau de l’écosystème de Hadoop
BigData
97
BigData
98
BigData
99
BigData et NOSQL– MP2
BigData
100
BigData
101
BigData
102

 Distributed Shell
 Impala
 Apache Giraph
 Spark
 Autres : https://cwiki.apache.org/confluence/display/HADOOP2/PoweredByYarn
BigData et NOSQL– MP2
103





BigData
104
BigData
105
BigData
106
BigData
107
BigData
108
BigData
109
BigData
110
BigData
111
BigData
112
BigData
113


BigData et NOSQL– MP2
BigData
114
BigData et NOSQL– MP2
115
 Comme indiqué précédemment, Hadoop est développé en Java. Les tâches
MAP/REDUCE sont donc implémentables par le biais d'interfaces Java (il
existe cependant des wrappers très simples permettant d'implémenter ses tâches
dans n'importe quel langage).
 Un programme Hadoop se compile au sein d'un .jar.

 Une classe dite « DRIVER » qui contient la fonction main du programme. Cette
classe se chargera d'informer Hadoop des types de données clef/valeur utilisées, des
classes se chargeant des opérations MAP et REDUCE, et des fichiers HDFS à utiliser
pour les entrées/sorties.
 Une classe MAPPER (qui effectuera l'opération MAP).
 Une classe REDUCER (qui effectuera l'opération REDUCE)
BigData et NOSQL– MP2
116


BigData et NOSQL– MP2
117
 La classe est une classe enveloppante pour les entiers (comme Integer en Java,
mais permettant aussi de modifier les valeurs entières contenues), définie dans
org.apache.hadoop.io.
 Un objet x instance de cette classe est donc un pointeur sur un entier, que l’on peut modifier
par x.set(val) (val étant un entier). On peut déterminer la valeur pointée par x par x.get().
BigData et NOSQL– MP2
118
 La clé key est de type général
 La classe est une classe définie par Hadoop (dans org.apache.hadoop.io.BinaryComparable) qui permet
de coder du texte au standard d’encodage UTF8: c’est une classe sérialisable, et qui permet la comparaison
(compareTo)
 La fonction prend également en entrée un contexte d’exécution (de type Context) dans lequel la
fonction map va écrire ses résultats.
 La fonction doit pouvoir lancer des exceptions, de type IOException ou InterruptedException.
119
 La classe StringTokenizer de java.lang.Object permet de découper une chaîne de caractères en
mots.
 On passe au StringTokenizer nouvellement créé le texte donné en entrée. En fait,
TextInputFormat de la classe Text définit par défaut un mode d’entrée du texte, ligne par ligne.
Donc il y aura ici un processus map par ligne de texte.
 On itère ensuite sur les mots trouvés, séparés par un espace dans value (converti en chaîne de
caractères).
120


121
 Une fonction map doit être définie dans une classe héritant de Mapper (défini dans
org.apache.hadoop.mapreduce.Mapper).
 Cette classe est une classe générique Java :
Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT> :
 KEYIN qui sera le type des clés d’entrée pour la fonction map
 VALUEIN pour le type des valeurs d’entrée,
 KEYOUT pour le type des clés de sortie
 VALUEOUT pour le type des valeurs de sortie
 Mapper<Object, Text, Text, IntWritable> désigne une classe qui va comprendre une
méthode map, prenant des entrées de type Object*Text et rendra des valeurs de type
Text*IntWritable.
122
 La fonction reduce prend en entrée :
 un Text key (clé de sortie de fonctions map de la première phase),
 une liste (Iterable<IntWritable>) de valeurs entières, qui correspondent à toutes les valeurs
associées à la clé key,
 et un Context context qui permet d’écrire une paire de valeurs de sortie, de type
Text*IntWritable pour chaque mot, le nombre de fois qu’il apparaît dans le texte)
123

124
 On itère sur la liste (key, value) en sortie de map et on somme les value, dans sum.
125

126


127

BigData et NOSQL– MP2
128

BigData et NOSQL– MP2
129

BigData et NOSQL– MP2
130


BigData et NOSQL– MP2
131
 Hadoop propose trois modes d'exécution

 tout s’exécute au sein d’une seule JVM, en local.
 mode recommandé en phase de développement (des petits tests et débogages)

 le fonctionnement en mode cluster est simulé par le lancement des tâches dans différentes JVM
exécutées localement.
 La configuration est presque comme celle d'un cluster

 c'est le mode d'exécution réel d'Hadoop.
 Il permet de faire fonctionner le système de fichiers distribué et les tâches sur un ensemble de
machines.
 Une topologie est mise en place.
BigData et NOSQL– MP2
132

BigData et NOSQL– MP2
133

BigData et NOSQL– MP2

134

BigData et NOSQL– MP2

135
BigData et NOSQL– MP2
L3

Contenu connexe

PPTX
Hadoop
PDF
Chapitre-2-Le-Big-Data-Hadoop-HDFS-et-MapReduce.pdf
PPTX
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
PPTX
10 big data hadoop
PPTX
10 big data hadoop
PPTX
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
PDF
Techday Arrow Group: Hadoop & le Big Data
PDF
Tech day hadoop, Spark
Hadoop
Chapitre-2-Le-Big-Data-Hadoop-HDFS-et-MapReduce.pdf
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
10 big data hadoop
10 big data hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Techday Arrow Group: Hadoop & le Big Data
Tech day hadoop, Spark

Similaire à ch2-hadoop-L3-2023-4p (1).pdf (20)

PDF
Hadoop
PPTX
Chapitre2_Hadoop_MapReduce----------------.pptx
DOCX
Résumkbjnnbuhb.jhyhuhuhhhhhhhhhhhhhhhhhhhhhhhé.docx
TXT
Aqui hadoop draft
PDF
chp
PDF
Distributed programing (hadoop &amp;&amp; java) version finale.pptx
PDF
Big Data, Hadoop & Spark
PDF
Hadoop Introduction in Paris
PDF
Cours_de_Big_Data_LF2_IG_EbhkjbhkhfhSB.pdf
PDF
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
PDF
BigData_Chp2: Hadoop & Map-Reduce
PDF
BigData_Technologies_PL.pdf
PDF
Plongée dans la plateforme hadoop
PDF
Afterwork hadoop
PDF
PDF
Cours Big Data Chap2
PDF
Hadoop and friends : introduction
PDF
PDF
598262625-Presentation-D-HADOooooooOP.pdf
PDF
BigData_Technologies_PL.pdf
Hadoop
Chapitre2_Hadoop_MapReduce----------------.pptx
Résumkbjnnbuhb.jhyhuhuhhhhhhhhhhhhhhhhhhhhhhhé.docx
Aqui hadoop draft
chp
Distributed programing (hadoop &amp;&amp; java) version finale.pptx
Big Data, Hadoop & Spark
Hadoop Introduction in Paris
Cours_de_Big_Data_LF2_IG_EbhkjbhkhfhSB.pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
BigData_Chp2: Hadoop & Map-Reduce
BigData_Technologies_PL.pdf
Plongée dans la plateforme hadoop
Afterwork hadoop
Cours Big Data Chap2
Hadoop and friends : introduction
598262625-Presentation-D-HADOooooooOP.pdf
BigData_Technologies_PL.pdf
Publicité

Dernier (15)

PPTX
Logique séquentielle : les fondamentaux
PPTX
A Recurrent Neural Network (RNN)s a type of artificial neural network
PPTX
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
PDF
Chapitre 7 - Routage dynamique...........
PDF
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
PPTX
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
PPTX
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
PDF
Visite de chantier – Projet de Polyclinique à Laghouat
PDF
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
PDF
TP de La Masse Volumique apparente et absolue
PPTX
FormationFormation e pFormationour HC .pptx
PPTX
UMAPON Cours de traitement des minerais 2.pptx
PDF
TP L’analyse granulométrique par tamisage
PDF
Cours SPC resumé-1.pdf...................
PPTX
Introduction aux Systèmes temps réel.pptx
Logique séquentielle : les fondamentaux
A Recurrent Neural Network (RNN)s a type of artificial neural network
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
Chapitre 7 - Routage dynamique...........
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
Visite de chantier – Projet de Polyclinique à Laghouat
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
TP de La Masse Volumique apparente et absolue
FormationFormation e pFormationour HC .pptx
UMAPON Cours de traitement des minerais 2.pptx
TP L’analyse granulométrique par tamisage
Cours SPC resumé-1.pdf...................
Introduction aux Systèmes temps réel.pptx
Publicité

ch2-hadoop-L3-2023-4p (1).pdf

  • 1. Cours : Big DATA --Chapitre 2 : Traitement des données massives avec Hadoop-- 2022-2023 Asma KERKENI [email protected] Institut Supérieur d'Informatique et Mathématiques Monastir Mastère Professionnel en Génie Logiciel– Niveau 2 Licence Génie Logiciel et Système d’information– Niveau 3      ‐  2 BigData 3 BigData 5      ‐   BigData
  • 2. 6 BigData et NOSQL– MP2 7  Dans un centre de données, les serveurs sont empilés dans des baies (Rack) équipées pour leur fournir l’alimentation, la connexion réseau vers la grappe de serveur, la ventilation.  Une baie contient environ 40 serveurs. Un centre de données contient quelques centaines de baies. Ordre de grandeur : quelques milliers de serveurs par centre.  Combien des centres chez Google, Facebook, Amazon ... ? Des millions de serveurs. Data Center BigData Classique: Ramener les données au serveur pour les traiter Big Data Amener les codes de traitements aux données  ‐  BigData 11     BigData
  • 3. 12 BigData  C’est la capacité d'un système à gérer des quantités croissantes de données, sans diminution significative de ses performances Plus facile de maintenir une seule machine. Control centralisé sur les données et les calculs. Mise à niveau illimitée de la puissance de calcul d'un système Tolérance aux pannes 13 14     BigData 15         BigData
  • 4. 21 BigData 22  Le système de fichiers distribués Hadoop (HDFS) est basé sur le système de fichiers Google (GFS).  Il fournit un système de fichiers distribué conçu pour fonctionner sur du matériel standard et présente de nombreuses similitudes avec les systèmes de fichiers distribués existants avec certaines différences. NB: La liste présentée ci-dessus n’est pas exhaustive!  Il est hautement tolérant aux pannes et est conçu pour être déployé sur du matériel à faible coût. 23  MapReduce est un modèle de programmation parallèle pour l'écriture d'applications distribuées conçu par Google.  Permet un traitement efficace de grandes quantités de données (plusieurs téraoctets) sur des grappes étendues (des milliers de nœuds) de matériel standard de manière fiable et tolérante aux pannes. NB: La liste présentée ci-dessus n’est pas exhaustive! 24  Plusieurs outils existent pour permettre:  L’extraction et le stockage des données de/sur HDFS  La simplification des opérations de traitement sur ces données  La gestion et coordination de la plateforme  Le monitoring du cluster NB: La liste présentée ci-dessus n’est pas exhaustive!
  • 5. 29 30     BigData   Quand un fichier mydata.txt est enregistré dans HDFS, il est décomposé en grands blocs chaque bloc ayant un nom unique: blk_1, blk_2… Les fichiers sont physiquement (64 Mo: Hadoop 1.x et 128 Mo (Hadoop 2.x) ) pour optimiser les temps de transfert et d'accès Ces blocs sont ensuite sur plusieurs machines, permettant ainsi de traiter . Cela permet aussi de ne pas être limité par d'une seule machine pour au contraire tirer parti de tout l'espace disponible du cluster de machines ;  BigData 35  Le nœud maitre appelé contient et stocke tous les et ainsi que dans le cluster ( ).  Une autre machine, appelée fait des pour le compte du (Ce un helper).  Les autres nœuds, , sont les nœuds de stockage. Ce sont les qui ont pour rôle (création, suppression et réplication de blocs) sur instruction du namenode.  Le fonctionnement de HDFS est assuré par 3 types de démons: , et . BigData 
  • 6. 36 BigData et NOSQL– MP2 45   Démon s’exécutant sur une machine séparée,  Contient des métadonnées, pas de données user,  Permet de retrouver les nœuds qui exécutent les blocs d’un fichier  Cordonne l’accès aux données dans le système de fichiers.  La responsabilité principale d’un Namenode est de stocker le namespace de HDFS : • L’ arborescence des répertoires • Les permissions des fichiers • Le mapping des fichiers aux blocs  Ces données sont stockées dans deux structures : et NameNode BigData DataNade 47  Démon esclave qui s'exécute sur chaque machine esclave.  Il stocke les données réelles.  Exécute les demandes de lecture et d’écriture de bas niveau des clients du système de fichiers.  Il y a un DataNode au sein du cluster.  Les Datanodes sont sous les ordres du Namenode et sont surnommés les .  Ils sont donc sollicités par les Namenodes lors des opérations de lecture et d'écriture!  BigData 48  Hadoop réplique chaque bloc 3 fois (par défaut)  Concept de  2 copies de chaque bloc se trouvent dans deux nœuds de données distincts du même rack afin de réduire la latence,  La troisième copie est placée sur un autre rack pour améliorer la redondance et la disponibilité.  Si le nœud est en panne, le NN le détecte, et s’occupe de répliquer encore les blocs qui y étaient hébergés pour avoir toujours 3 copies stockées  BigData
  • 7. 49  Ne jamais perdre toutes les données si tout le rack tombe en panne.  Gardez les flux volumineux dans le rack lorsque cela est possible.  Répartition basée sur l’hypothèse que dans le rack la bande passante est meuilleure et la latence est faible.  BigData write I would like to write file.txt 64Mo BlockB Ok, use DN1 and DN3 64Mo BlockB B File1.txt BigData read I would like to read file1.txt 64Mo BlockB Ok, 3 blocks: A: DN1, DN2 B: DN1, DN3 C: DN2, DN3 64Mo BlockB B B File1.txt BigData 52     BigData
  • 8. 58  Il y a deux possibilités pour manipuler HDFS :  Soit via l'API Java  Soit directement depuis un terminal via les commandes $ hdfs dfs <commande hdfs="" /> $ hadoop fs <commande HDFS> En particulier, les commandes principales sont : hdfs dfs –ls #listing home dir hdfs dfs –ls /user #listing user dir… hdfs dfs -mv <src><dst> #Moves files from source to destination. hdfs dfs –du –h /user #space used hdfs dfs –mkdir newdir #creating dir hdfs dfs –put myfile.csv . #storing a file on HDFS hdfs dfs –get myfile.csv . #getting a file from HDFS hdfs dfs –cat myfile.csv . #edit a file from HDFS BigData 59 BigData   Fait l’itération d’une fonction sur une liste d’éléments  Applique la fonction sur les résultats précédents et l’élément courant ( ,[0,1,2,3,4,5])=[0,1,4,9,16,25]  Reduce/fold ( ,[0,1,2,3,4,5])=(((((0+1)+2)+3)+4)+5)=15  Retourne un et un seul résultat,  Applique une fonction sur chaque élément d’une liste  Retourne une liste de résultats  Map(f(x),X[1:n]) à [f(X[1]),...,f(X[n])] BigData 64 BigData et NOSQL– MP2 BigData
  • 9. 65 Approche traditionnelle BigData 66  Approche Big Data BigData 67  Etape 1: MAP  Faire des petits traitements en parallèle ligne par ligne: Pas d’opérations de calculs entre plusieurs lignes.  2 Types de filtrage dans cet exemple: • diminuer le nombre de colonnes: nom magasin, valeur des ventes . • : supprimer les lignes non concernées (année autre que 2018). BigData 68  Etape 2: Sort and Shuffle  Etape faite automatiquement par Hadoop, composée de deux sous étapes: • Rassemblement des données dans la même machine • Tri par clé pour regrouper les ventes de même magasin successivement BigData
  • 10. 69  Etape 3: Reduce  Comme le mapper, le code de reducer doit être écrit par l’utilisateur  Ici; faire la somme des ventes par magasin. BigData v2 k2 k v k v v1 k1 vn kn … k v … k v  Dans l'étape le but est de partir d'un couple <clé, valeur> et d'y associé de nouveaux couples <clé, valeur>. Les clés en entrée sont différentes des clés produites par le Map.  Le nombre de tâches Map ne dépend pas du nombre de nœuds, mais du nombre de blocs de données en entrée. Chaque bloc se fait assigner une seule tâche Map. BigData k v k v k v k v k v k v k v v v v (~SQL Group by)  BigData k v k v k v k v k v v v v ~ SQL aggregation k v  Dans l'étape le but est d'associer toutes les valeurs correspondantes à la même clé. On souhaite donc rassembler tous les couples <clé, valeur>.  Pour le traitement, les taches Reduce suivent le même schéma que les taches Map.  Elles n'ont pas à s'exécuter parallèlement et dès qu'un nœud fini son traitement un autre lui est aussitôt assigné. BigData
  • 11. 76  Word Count: Comptage des occurrences des mots BigData 77  BigData 78 BigData 79 BigData
  • 13. 84  BigData 85  BigData 86  BigData 87   S’exécute sur la même machine que le Namenode (machine master) Divise le travail sur les Mappers et Reducers s’exécutant sur les différents nœuds.  S’exécute sur chacun des nœuds pour exécuter les vraies tâches de Map- Reduce. Choisit de traiter (map et reduce) un bloc sur la même machine que lui affecté S’il est déjà occupé, la tâche revient à un autre tracker qui utilisera le réseau (rare). BigData
  • 14. 88  Un job Map-Reduce est divisé en plusieurs tâches et  Chaque tâche est exécutée sur un nœud du cluster  Un slot est une unité d’exécution qui représente la capacité du Task Tracker à exécuter une tâche (map ou reduce) individuellement, à un moment donné. • D’allouer les ressources (mémoire, CPU…) aux différentes tâches • De coordonner l’exécution des jobs Map-Reduce • De réserver et ordonnancer les slots, et de gérer les fautes en réallouant les slots au besoin.   Chaque nœud a un certain nombre de slots prédéfinis (Map Slots+ Reduce Slots). BigData Job Tracker Resources allocation – scheduling - monitoring Task Tracker Task Tracker Task Tracker Client Client Map task Map task Map task Map task Reduce task Assign tasks Periodic reports BigData 90 BigData 91    Problème d’exploitation: si on a plusieurs map jobs à exécuter, et que les map slots sont pleins, les reduce slots ne peuvent pas être utilisés, et vice-versa   Problème de scalabilité et de goulot d'étranglement : les nombreux datanodes existants ne sont pas exploités: max de 5000 noeuds et 40,000 tasks s’executant simultanément (yahoo).  Problème de disponibilité: SPoF (single point of failure)   Problème d’interoperabilité: impossible d’exécuter des applications non-MR sur HDFS BigData
  • 15. 92     BigData et NOSQL– MP2 BigData 93     BigData 94        BigData 95         BigData
  • 16. Job Tracker Resources allocation – scheduling - monitoring Task Tracker Task Tracker Task Tracker Client Client Map task Map task Map task Map task Reduce task Resources Manager Application Master Application Master container Node Manager Node Manager Node Manager container container container Assign tasks Periodic reports Node status Request resources MapReduce status Yarn=Cerveau de l’écosystème de Hadoop BigData 97 BigData 98 BigData 99 BigData et NOSQL– MP2 BigData
  • 17. 100 BigData 101 BigData 102   Distributed Shell  Impala  Apache Giraph  Spark  Autres : https://cwiki.apache.org/confluence/display/HADOOP2/PoweredByYarn BigData et NOSQL– MP2 103      BigData
  • 20. 112 BigData 113   BigData et NOSQL– MP2 BigData 114 BigData et NOSQL– MP2 115  Comme indiqué précédemment, Hadoop est développé en Java. Les tâches MAP/REDUCE sont donc implémentables par le biais d'interfaces Java (il existe cependant des wrappers très simples permettant d'implémenter ses tâches dans n'importe quel langage).  Un programme Hadoop se compile au sein d'un .jar.   Une classe dite « DRIVER » qui contient la fonction main du programme. Cette classe se chargera d'informer Hadoop des types de données clef/valeur utilisées, des classes se chargeant des opérations MAP et REDUCE, et des fichiers HDFS à utiliser pour les entrées/sorties.  Une classe MAPPER (qui effectuera l'opération MAP).  Une classe REDUCER (qui effectuera l'opération REDUCE) BigData et NOSQL– MP2
  • 21. 116   BigData et NOSQL– MP2 117  La classe est une classe enveloppante pour les entiers (comme Integer en Java, mais permettant aussi de modifier les valeurs entières contenues), définie dans org.apache.hadoop.io.  Un objet x instance de cette classe est donc un pointeur sur un entier, que l’on peut modifier par x.set(val) (val étant un entier). On peut déterminer la valeur pointée par x par x.get(). BigData et NOSQL– MP2 118  La clé key est de type général  La classe est une classe définie par Hadoop (dans org.apache.hadoop.io.BinaryComparable) qui permet de coder du texte au standard d’encodage UTF8: c’est une classe sérialisable, et qui permet la comparaison (compareTo)  La fonction prend également en entrée un contexte d’exécution (de type Context) dans lequel la fonction map va écrire ses résultats.  La fonction doit pouvoir lancer des exceptions, de type IOException ou InterruptedException. 119  La classe StringTokenizer de java.lang.Object permet de découper une chaîne de caractères en mots.  On passe au StringTokenizer nouvellement créé le texte donné en entrée. En fait, TextInputFormat de la classe Text définit par défaut un mode d’entrée du texte, ligne par ligne. Donc il y aura ici un processus map par ligne de texte.  On itère ensuite sur les mots trouvés, séparés par un espace dans value (converti en chaîne de caractères).
  • 22. 120   121  Une fonction map doit être définie dans une classe héritant de Mapper (défini dans org.apache.hadoop.mapreduce.Mapper).  Cette classe est une classe générique Java : Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT> :  KEYIN qui sera le type des clés d’entrée pour la fonction map  VALUEIN pour le type des valeurs d’entrée,  KEYOUT pour le type des clés de sortie  VALUEOUT pour le type des valeurs de sortie  Mapper<Object, Text, Text, IntWritable> désigne une classe qui va comprendre une méthode map, prenant des entrées de type Object*Text et rendra des valeurs de type Text*IntWritable. 122  La fonction reduce prend en entrée :  un Text key (clé de sortie de fonctions map de la première phase),  une liste (Iterable<IntWritable>) de valeurs entières, qui correspondent à toutes les valeurs associées à la clé key,  et un Context context qui permet d’écrire une paire de valeurs de sortie, de type Text*IntWritable pour chaque mot, le nombre de fois qu’il apparaît dans le texte) 123 
  • 23. 124  On itère sur la liste (key, value) en sortie de map et on somme les value, dans sum. 125  126   127  BigData et NOSQL– MP2
  • 24. 128  BigData et NOSQL– MP2 129  BigData et NOSQL– MP2 130   BigData et NOSQL– MP2 131  Hadoop propose trois modes d'exécution   tout s’exécute au sein d’une seule JVM, en local.  mode recommandé en phase de développement (des petits tests et débogages)   le fonctionnement en mode cluster est simulé par le lancement des tâches dans différentes JVM exécutées localement.  La configuration est presque comme celle d'un cluster   c'est le mode d'exécution réel d'Hadoop.  Il permet de faire fonctionner le système de fichiers distribué et les tâches sur un ensemble de machines.  Une topologie est mise en place. BigData et NOSQL– MP2
  • 25. 132  BigData et NOSQL– MP2 133  BigData et NOSQL– MP2  134  BigData et NOSQL– MP2  135 BigData et NOSQL– MP2 L3