SlideShare ist ein Scribd-Unternehmen logo
1 von 71
1
2
Présentée par Hamza Ben Marzouk
3
Hadoop
4
Ce fameux éléphant
• Doug Cutting principal
créateur de Hadoop
en 2002.
5
Mise en situation
6
Avant Hadoop
Les données surpassent la capacité des machines
7
Calcul distribué
• SETI@Home/BOINC un des parents de Hadoop,
A l'origine, un des premiers logiciels à permettre le calcul
distribué via l'utilisation des ordinateurs de volontaires
tout autour du monde.
Son objectif était de détecter d'éventuels signes de
civilisations
extra-terrestres en analysant des signaux radios reçus par
l'observatoire Arecibo au Porto Rico.
8
Que cherchons nous?
● Accès et partage des ressources pour toutes les machines.
● Extensibilité: on doit pouvoir ajouter de nouvelles machines pour le calcul si
nécessaire.
● Hétérogénéité: les machines doivent pouvoir avoir différentes architectures,
l'implémentation différents langages.
● Tolérance aux pannes: une machine en panne faisant partie du cluster ne
doit
pas produire d'erreur pour le calcul dans son ensemble.
● Transparence: le cluster dans son ensemble doit être utilisable comme une
seule et même machine « traditionnelle ».
9
Qui utilise Hadoop
10
http://wiki.apache.org/hadoop/PoweredBy
Quelques chiffres !
Estimations IDC: croissance de 60% par an
de l'industrie « Big Data », pour un
marché de 813 millions de dollars en 2016
uniquement pour la vente de logiciels
autour de Hadoop.
11
Pourquoi Hadoop est un succès ?
● Projet de la fondation Apache – Open Source (disponibilité)
● Modèle simple pour les développeurs
● Déployable très facilement ,configuration très simple.
● S'occupe de toutes les problématiques liées au calcul distribué
le programmeur a simplement à s'occuper du
développement logiciel pour l'exécution de la tâche.
12
Hadoop
13
Comment ça fonctionne ?
14
MAP/REDUCE
15
Map/Reduce
• Map/Reduce est un paradigme (suivant le
stratégie algorithmique divide and
conquer) visant à exécuter un problème
large de manière distribué en découpant le
problème en plusieurs problèmes de taille
réduite.
16
Map/Reduce
MapReduce définit deux opérations distinctes à effectuer sur les
données d'entrée:
● La première, MAP, va transformer les données d'entrée en une série de
couples clef/valeur. Elle va regrouper les données en les associant à des clefs,
choisies de telle sorte que les couples clef/valeur aient un sens par rapport au
problème à résoudre.
Par ailleurs, cette opération doit être parallélisable
● La seconde, REDUCE, 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.
17
Map/Reduce
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.
… et Hadoop se chargera du reste (problématiques calcul distribué,
groupement par clef distincte entre MAP et REDUCE, etc.).
18
Exemple concret WCount
19
WCount
20
WCount
21
WCount
22
WCount
23
Map/Reduce
24
Résumons
25
26
Hadoop
HDFS
27
HDFS
• Pour stocker les données en entrée de nos tâches
Hadoop, ainsi que
• les résultats de nos traitements, on va utiliser
HDFS:
Hadoop Distributed FileSystem
• Il s'agit du système de fichier standard de Hadoop
- au même sens que les systèmes de fichiers
FAT32, NTFS ou encore Ext3FS, à la différence qu'il
est évidemment distribué.
28
HDFS
Les caractéristiques de HDFS:
● Il est distribué: les données sont réparties
sur tout le cluster de machines.
● Il est répliqué: si une des machines du
cluster tombe en panne, aucune
donnée n'est perdue.
29
HDFS
30
HDFS
HDFS repose sur deux serveurs (des daemons):
● Le NameNode, qui stocke les informations relatives aux noms de fichiers.
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.
● Le DataNode, qui stocke les blocs de données eux-mêmes. Il y a un DataNode
pour chaque machine au sein du cluster, et ils sont en communication
constante avec le NameNode .
Par défaut, les données sont divisées en blocs de 64KB (configurable).
31
HDFS
32
Prenons un exemple
33
Prenons un exemple
34
Remarques HDFS
● La gestion du stockage est assurée par les
daemons Hadoop donc on a pas à se
soucier d'où sont stockées les données.
● Possibilité d’extraire des donnés à partir d’une
base de données classique
35
Architecture de Hadoop
36
Architecture de Hadoop
Comme pour HDFS, la gestion des tâches de Hadoop se base sur deux serveurs
(les daemons NameNode et DataNode) :
● Le JobTracker, qui va directement recevoir la tâche à exécuter (un .jar Java),
ainsi que les données d'entrées (nom des fichiers stockés sur HDFS) et le
répertoire où stocker les données de sortie (toujours sur HDFS).
Il y a un seul JobTracker sur une seule machine du cluster Hadoop. Le JobTracker est en
communication avec le NameNode de HDFS et sait donc où sont les données.
● Le TaskTracker, qui est en communication constante avec le JobTracker et va
recevoir les opérations simples à effectuer (MAP/REDUCE) ainsi que les blocs
de données correspondants (stockés sur HDFS). Il y a un TaskTracker sur
chaque machine du cluster.
37
Architecture de Hadoop
38
Remarque
• Généralement, on place le JobTracker et le NameNode HDFS
sur la même machine (une machine plus puissante que les
autres), sans y placer de TaskTracker/DataNode HDFS pour
limiter la charge.
• Cette machine particulière au sein du cluster (qui contient les
deux « gestionnaires », de tâches et de fichiers) est
communément appelée le noeud maître (« Master Node »).
• Les autres nœuds (contenant TaskTracker + DataNode) sont
communément appelés nœuds esclaves (« slave node »).
39
Architecture Générale
40
Avec Hadoop
41
Avec Hadoop
42
Hive est une infrastructure pour dépôt de données (Data warehouse)
développée pour Hadoop et qui a pour rôle de stocker des données
sur HDFS et aussi de compiler les requêtes SQL en jobs Map/Reduce et
les executer sur le cluster Hadoop.
Hive utilise un language proche du SQL : HiveQL
Avec Hadoop
• Le projet Pig se positionne comme Hive dans le sens où il fournit aux
développeurs un langage de haut niveau (PigLatin) dédié à l'analyse de gros
volumes de données. Il s'adresse alors aux développeurs habitués à faire des
scripts via Bash ou Python par exemple qui seront traduits en des
programmes Map/Reduce que Hadoop va exécuter sur le cluster.
43
Avec Hadoop
• HBase permet l'intégration à Hadoop d'un système de
stockage par clé/valeur appelé couramment stockage
binaire ou key/value store en anglais.
• Ce sous-projet à Hadoop est également inspiré par le
projet BigTable de Google.
44
Programmation Hadoop
45
Remarque
Hadoop est essentiellement piloté par des outils
consoles (CLI), mais
quelques interfaces utilisateurs sont mises à
disposition de l'utilisateur
46
Exemple Interface JobTracker
47
Programmation Hadoop
Les tâches MAP/REDUCE sont implémentables par le biais d'interfaces Java
Un programme Hadoop se compile au sein d'un .jar.
Pour développer un programme Hadoop, on va créer trois classes distinctes:
● 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 MAP (qui effectuera l'opération MAP).
● Une classe REDUCE (qui effectuera l'opération REDUCE).
48
Programmation
La classe Driver contient le main de notre programme.
Au sein du main() en question, on va effectuer les opérations suivantes:
● Créer un objet Configuration de Hadoop, qui est nécessaire pour permettre à
Hadoop d'obtenir la configuration générale du cluster
● Permettre à Hadoop de récupérer d'éventuels arguments génériques
disponibles sur la ligne de commande (par exemple le nom du package de la
tâche à exécuter si le .jar en contient plusieurs). On va également récupérer
les arguments supplémentaires pour s'en servir (Input et Output)
49
Programmation
● Créer un nouvel objet Hadoop Job, qui désigne une tâche Hadoop.
● Utiliser cet objet Job pour informer Hadoop du nom de nos classes Driver,
MAP et REDUCE.
● Utiliser le même objet pour informer Hadoop des types de données utilisés
dans notre programme pour les couples (clef;valeur) MAP et REDUCE.
● Informer Hadoop des fichiers d'entrée/sortie pour notre tâche sur HDFS.
● Enfin, utiliser l'objet Job créé précédemment pour déclencher le lancement
de la tâche via le cluster Hadoop.
On reprend ici l'exemple du compteur d’occurrences de mots décrit
précédemment.
50
Classe Driver
51
Classe Driver
52
Classe Driver
53
Classe Driver
54
Classe Driver
55
Classe Driver
56
Classe Driver
57
Classe Map
58
Classe Map
59
Classe Map
60
Classe Map
61
Classe Reduce
62
Classe Reduce
63
Classe Reduce
64
Classe Reduce
65
À noter
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:
● hadoop fs -put livre.txt /data_input/livre.txt
Pour stocker le fichier livre.txt sur HDFS dans le répertoire /data_input.
● hadoop fs -get /data_input/livre.txt livre.txt
Pour obtenir le fichier /data_input/livre.txt de HDFS et le stocker dans le fichier
local livre.txt.
● hadoop fs -mkdir /data_input
Pour créer le répertoire /data_input
● hadoop fs -rm /data_input/livre.txt
Pour supprimer le fichier /data_input/livre.txt
d'autres commandes usuelles: -ls, -cp, -rmr, -du, etc...
66
Remarques
67
Autres langages: streaming
68
Voyons les résultats
69
• Sources bibliographique :
http://cours.tokidev.fr/bigdata
• Hadoop User Group France
• wikipedia.org
70
71

Weitere ähnliche Inhalte

Was ist angesagt?

Installation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abidInstallation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abidAmal Abid
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - IntroductionBlandine Larbret
 
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopCasablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopBenoît de CHATEAUVIEUX
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : CassandraLilia Sfaxi
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoopPatrick Bury
 
MapReduce: Traitement de données distribué à grande échelle simplifié
MapReduce: Traitement de données distribué à grande échelle simplifiéMapReduce: Traitement de données distribué à grande échelle simplifié
MapReduce: Traitement de données distribué à grande échelle simplifiéMathieu Dumoulin
 
Spark une alternative à Hadoop MapReduce pour le Datamining
Spark une alternative à Hadoop MapReduce pour le DataminingSpark une alternative à Hadoop MapReduce pour le Datamining
Spark une alternative à Hadoop MapReduce pour le DataminingModern Data Stack France
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5Amal Abid
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystèmeKhanh Maudoux
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
 
Mathias Herberts fait le retour d'expérience Hadoop au Crédit Mutuel Arkéa
Mathias Herberts fait le retour d'expérience Hadoop au Crédit Mutuel ArkéaMathias Herberts fait le retour d'expérience Hadoop au Crédit Mutuel Arkéa
Mathias Herberts fait le retour d'expérience Hadoop au Crédit Mutuel ArkéaModern Data Stack France
 
Spark Streaming
Spark StreamingSpark Streaming
Spark StreamingPALO IT
 

Was ist angesagt? (20)

Installation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abidInstallation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abid
 
Hadoop Graph Analysis par Thomas Vial
Hadoop Graph Analysis par Thomas VialHadoop Graph Analysis par Thomas Vial
Hadoop Graph Analysis par Thomas Vial
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopCasablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
 
HADOOP + R
HADOOP + RHADOOP + R
HADOOP + R
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Tech day hadoop, Spark
Tech day hadoop, SparkTech day hadoop, Spark
Tech day hadoop, Spark
 
Hadoop
HadoopHadoop
Hadoop
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoop
 
MapReduce: Traitement de données distribué à grande échelle simplifié
MapReduce: Traitement de données distribué à grande échelle simplifiéMapReduce: Traitement de données distribué à grande échelle simplifié
MapReduce: Traitement de données distribué à grande échelle simplifié
 
Spark une alternative à Hadoop MapReduce pour le Datamining
Spark une alternative à Hadoop MapReduce pour le DataminingSpark une alternative à Hadoop MapReduce pour le Datamining
Spark une alternative à Hadoop MapReduce pour le Datamining
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 
Une introduction à HBase
Une introduction à HBaseUne introduction à HBase
Une introduction à HBase
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
 
Mathias Herberts fait le retour d'expérience Hadoop au Crédit Mutuel Arkéa
Mathias Herberts fait le retour d'expérience Hadoop au Crédit Mutuel ArkéaMathias Herberts fait le retour d'expérience Hadoop au Crédit Mutuel Arkéa
Mathias Herberts fait le retour d'expérience Hadoop au Crédit Mutuel Arkéa
 
Une introduction à Hive
Une introduction à HiveUne introduction à Hive
Une introduction à Hive
 
Spark Streaming
Spark StreamingSpark Streaming
Spark Streaming
 
Hortonwork
HortonworkHortonwork
Hortonwork
 
Hadoop prêt pour l'Entreprise
Hadoop prêt pour l'EntrepriseHadoop prêt pour l'Entreprise
Hadoop prêt pour l'Entreprise
 

Ähnlich wie Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )

Aqui hadoop draft
Aqui hadoop draftAqui hadoop draft
Aqui hadoop draftEric Papet
 
Présentation_HADOOP.pptx
Présentation_HADOOP.pptxPrésentation_HADOOP.pptx
Présentation_HADOOP.pptxbely26
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoopPatrick Bury
 
ch2-hadoop-L3-2023-4p (1).pdf
ch2-hadoop-L3-2023-4p (1).pdfch2-hadoop-L3-2023-4p (1).pdf
ch2-hadoop-L3-2023-4p (1).pdfsalmanakbi
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataArrow Group
 
NOTES DE BIG DATA L 3 INFO DUS 2024.pptx
NOTES DE BIG DATA L 3 INFO DUS 2024.pptxNOTES DE BIG DATA L 3 INFO DUS 2024.pptx
NOTES DE BIG DATA L 3 INFO DUS 2024.pptxEddySHANGA
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in ParisTed Drake
 
Spad big data - sfds - 2016
Spad   big data - sfds - 2016Spad   big data - sfds - 2016
Spad big data - sfds - 2016Julien BLAIZE
 
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdfCHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdfYounesOuladSayad1
 
Hadoop MapReduce.docx
Hadoop  MapReduce.docxHadoop  MapReduce.docx
Hadoop MapReduce.docxIssamHamdi
 
160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptxmajdoulineaitabdelal
 
Plongée dans la plateforme hadoop
Plongée dans la plateforme hadoopPlongée dans la plateforme hadoop
Plongée dans la plateforme hadooppkernevez
 
PerfUG - Hadoop Performances
PerfUG - Hadoop PerformancesPerfUG - Hadoop Performances
PerfUG - Hadoop PerformancesSofian Djamaa
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & SparkAlexia Audevart
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkAmal Abid
 
Distributed programing (hadoop && java) version finale.pptx
Distributed programing  (hadoop && java) version finale.pptxDistributed programing  (hadoop && java) version finale.pptx
Distributed programing (hadoop && java) version finale.pptxAhmed rebai
 

Ähnlich wie Présentation Hadoop SECURINETS INSAT (MAP & REDUCE ) (20)

Hadoop
HadoopHadoop
Hadoop
 
Aqui hadoop draft
Aqui hadoop draftAqui hadoop draft
Aqui hadoop draft
 
Présentation_HADOOP.pptx
Présentation_HADOOP.pptxPrésentation_HADOOP.pptx
Présentation_HADOOP.pptx
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoop
 
Hadoop
HadoopHadoop
Hadoop
 
ch2-hadoop-L3-2023-4p (1).pdf
ch2-hadoop-L3-2023-4p (1).pdfch2-hadoop-L3-2023-4p (1).pdf
ch2-hadoop-L3-2023-4p (1).pdf
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big Data
 
NOTES DE BIG DATA L 3 INFO DUS 2024.pptx
NOTES DE BIG DATA L 3 INFO DUS 2024.pptxNOTES DE BIG DATA L 3 INFO DUS 2024.pptx
NOTES DE BIG DATA L 3 INFO DUS 2024.pptx
 
Hadoop
HadoopHadoop
Hadoop
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in Paris
 
Spad big data - sfds - 2016
Spad   big data - sfds - 2016Spad   big data - sfds - 2016
Spad big data - sfds - 2016
 
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdfCHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
 
Hadoop MapReduce.docx
Hadoop  MapReduce.docxHadoop  MapReduce.docx
Hadoop MapReduce.docx
 
160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx160813-technology-template-16x9.pptx
160813-technology-template-16x9.pptx
 
Plongée dans la plateforme hadoop
Plongée dans la plateforme hadoopPlongée dans la plateforme hadoop
Plongée dans la plateforme hadoop
 
PerfUG - Hadoop Performances
PerfUG - Hadoop PerformancesPerfUG - Hadoop Performances
PerfUG - Hadoop Performances
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Distributed programing (hadoop && java) version finale.pptx
Distributed programing  (hadoop && java) version finale.pptxDistributed programing  (hadoop && java) version finale.pptx
Distributed programing (hadoop && java) version finale.pptx
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 

Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )

  • 1. 1
  • 3. 3
  • 5. Ce fameux éléphant • Doug Cutting principal créateur de Hadoop en 2002. 5
  • 7. Avant Hadoop Les données surpassent la capacité des machines 7
  • 8. Calcul distribué • SETI@Home/BOINC un des parents de Hadoop, A l'origine, un des premiers logiciels à permettre le calcul distribué via l'utilisation des ordinateurs de volontaires tout autour du monde. Son objectif était de détecter d'éventuels signes de civilisations extra-terrestres en analysant des signaux radios reçus par l'observatoire Arecibo au Porto Rico. 8
  • 9. Que cherchons nous? ● Accès et partage des ressources pour toutes les machines. ● Extensibilité: on doit pouvoir ajouter de nouvelles machines pour le calcul si nécessaire. ● Hétérogénéité: les machines doivent pouvoir avoir différentes architectures, l'implémentation différents langages. ● Tolérance aux pannes: une machine en panne faisant partie du cluster ne doit pas produire d'erreur pour le calcul dans son ensemble. ● Transparence: le cluster dans son ensemble doit être utilisable comme une seule et même machine « traditionnelle ». 9
  • 11. Quelques chiffres ! Estimations IDC: croissance de 60% par an de l'industrie « Big Data », pour un marché de 813 millions de dollars en 2016 uniquement pour la vente de logiciels autour de Hadoop. 11
  • 12. Pourquoi Hadoop est un succès ? ● Projet de la fondation Apache – Open Source (disponibilité) ● Modèle simple pour les développeurs ● Déployable très facilement ,configuration très simple. ● S'occupe de toutes les problématiques liées au calcul distribué le programmeur a simplement à s'occuper du développement logiciel pour l'exécution de la tâche. 12
  • 16. Map/Reduce • Map/Reduce est un paradigme (suivant le stratégie algorithmique divide and conquer) visant à exécuter un problème large de manière distribué en découpant le problème en plusieurs problèmes de taille réduite. 16
  • 17. Map/Reduce MapReduce définit deux opérations distinctes à effectuer sur les données d'entrée: ● La première, MAP, va transformer les données d'entrée en une série de couples clef/valeur. Elle va regrouper les données en les associant à des clefs, choisies de telle sorte que les couples clef/valeur aient un sens par rapport au problème à résoudre. Par ailleurs, cette opération doit être parallélisable ● La seconde, REDUCE, 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. 17
  • 18. Map/Reduce 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. … et Hadoop se chargera du reste (problématiques calcul distribué, groupement par clef distincte entre MAP et REDUCE, etc.). 18
  • 28. HDFS • Pour stocker les données en entrée de nos tâches Hadoop, ainsi que • les résultats de nos traitements, on va utiliser HDFS: Hadoop Distributed FileSystem • Il s'agit du système de fichier standard de Hadoop - au même sens que les systèmes de fichiers FAT32, NTFS ou encore Ext3FS, à la différence qu'il est évidemment distribué. 28
  • 29. HDFS Les caractéristiques de HDFS: ● Il est distribué: les données sont réparties sur tout le cluster de machines. ● Il est répliqué: si une des machines du cluster tombe en panne, aucune donnée n'est perdue. 29
  • 31. HDFS HDFS repose sur deux serveurs (des daemons): ● Le NameNode, qui stocke les informations relatives aux noms de fichiers. 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. ● Le DataNode, qui stocke les blocs de données eux-mêmes. Il y a un DataNode pour chaque machine au sein du cluster, et ils sont en communication constante avec le NameNode . Par défaut, les données sont divisées en blocs de 64KB (configurable). 31
  • 35. Remarques HDFS ● La gestion du stockage est assurée par les daemons Hadoop donc on a pas à se soucier d'où sont stockées les données. ● Possibilité d’extraire des donnés à partir d’une base de données classique 35
  • 37. Architecture de Hadoop Comme pour HDFS, la gestion des tâches de Hadoop se base sur deux serveurs (les daemons NameNode et DataNode) : ● Le JobTracker, qui va directement recevoir la tâche à exécuter (un .jar Java), ainsi que les données d'entrées (nom des fichiers stockés sur HDFS) et le répertoire où stocker les données de sortie (toujours sur HDFS). Il y a un seul JobTracker sur une seule machine du cluster Hadoop. Le JobTracker est en communication avec le NameNode de HDFS et sait donc où sont les données. ● Le TaskTracker, qui est en communication constante avec le JobTracker et va recevoir les opérations simples à effectuer (MAP/REDUCE) ainsi que les blocs de données correspondants (stockés sur HDFS). Il y a un TaskTracker sur chaque machine du cluster. 37
  • 39. Remarque • Généralement, on place le JobTracker et le NameNode HDFS sur la même machine (une machine plus puissante que les autres), sans y placer de TaskTracker/DataNode HDFS pour limiter la charge. • Cette machine particulière au sein du cluster (qui contient les deux « gestionnaires », de tâches et de fichiers) est communément appelée le noeud maître (« Master Node »). • Les autres nœuds (contenant TaskTracker + DataNode) sont communément appelés nœuds esclaves (« slave node »). 39
  • 42. Avec Hadoop 42 Hive est une infrastructure pour dépôt de données (Data warehouse) développée pour Hadoop et qui a pour rôle de stocker des données sur HDFS et aussi de compiler les requêtes SQL en jobs Map/Reduce et les executer sur le cluster Hadoop. Hive utilise un language proche du SQL : HiveQL
  • 43. Avec Hadoop • Le projet Pig se positionne comme Hive dans le sens où il fournit aux développeurs un langage de haut niveau (PigLatin) dédié à l'analyse de gros volumes de données. Il s'adresse alors aux développeurs habitués à faire des scripts via Bash ou Python par exemple qui seront traduits en des programmes Map/Reduce que Hadoop va exécuter sur le cluster. 43
  • 44. Avec Hadoop • HBase permet l'intégration à Hadoop d'un système de stockage par clé/valeur appelé couramment stockage binaire ou key/value store en anglais. • Ce sous-projet à Hadoop est également inspiré par le projet BigTable de Google. 44
  • 46. Remarque Hadoop est essentiellement piloté par des outils consoles (CLI), mais quelques interfaces utilisateurs sont mises à disposition de l'utilisateur 46
  • 48. Programmation Hadoop Les tâches MAP/REDUCE sont implémentables par le biais d'interfaces Java Un programme Hadoop se compile au sein d'un .jar. Pour développer un programme Hadoop, on va créer trois classes distinctes: ● 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 MAP (qui effectuera l'opération MAP). ● Une classe REDUCE (qui effectuera l'opération REDUCE). 48
  • 49. Programmation La classe Driver contient le main de notre programme. Au sein du main() en question, on va effectuer les opérations suivantes: ● Créer un objet Configuration de Hadoop, qui est nécessaire pour permettre à Hadoop d'obtenir la configuration générale du cluster ● Permettre à Hadoop de récupérer d'éventuels arguments génériques disponibles sur la ligne de commande (par exemple le nom du package de la tâche à exécuter si le .jar en contient plusieurs). On va également récupérer les arguments supplémentaires pour s'en servir (Input et Output) 49
  • 50. Programmation ● Créer un nouvel objet Hadoop Job, qui désigne une tâche Hadoop. ● Utiliser cet objet Job pour informer Hadoop du nom de nos classes Driver, MAP et REDUCE. ● Utiliser le même objet pour informer Hadoop des types de données utilisés dans notre programme pour les couples (clef;valeur) MAP et REDUCE. ● Informer Hadoop des fichiers d'entrée/sortie pour notre tâche sur HDFS. ● Enfin, utiliser l'objet Job créé précédemment pour déclencher le lancement de la tâche via le cluster Hadoop. On reprend ici l'exemple du compteur d’occurrences de mots décrit précédemment. 50
  • 66. À noter 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: ● hadoop fs -put livre.txt /data_input/livre.txt Pour stocker le fichier livre.txt sur HDFS dans le répertoire /data_input. ● hadoop fs -get /data_input/livre.txt livre.txt Pour obtenir le fichier /data_input/livre.txt de HDFS et le stocker dans le fichier local livre.txt. ● hadoop fs -mkdir /data_input Pour créer le répertoire /data_input ● hadoop fs -rm /data_input/livre.txt Pour supprimer le fichier /data_input/livre.txt d'autres commandes usuelles: -ls, -cp, -rmr, -du, etc... 66
  • 70. • Sources bibliographique : http://cours.tokidev.fr/bigdata • Hadoop User Group France • wikipedia.org 70
  • 71. 71