16
Juvénal CHOKOGOUE Hadoop Devenez opérationnel dans le monde du Big Data

Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

ISBN

: 978

-2-4

09-0

0761

-3

39 €

Hadoop Devenez opérationnel dans le monde du Big Data

Actuellement Consultant Insights & Data chez CAPGEMINI, le leader mondial des activités de services et de technologie, Juvénal CHOKOGOUE est Consultant spécialisé dans l’aide à la décision. Ses missions consistent à valoriser les données des organisa-tions et à fournir la visibilité nécessaire aux décideurs pour une prise de déci-sion efficace. Titulaire de six certifi-cations sur le Big Data, Hadoop et le traitement massif des données, il par-tage toute son expertise technique et toute sa passion pour le monde du Big Data à travers les pages de son livre. L’auteur propose aux lecteurs et uti-lisateurs d’Hadoop de poursuivre les échanges sur les réseaux sociaux ou sur le site web dédié http://www.data-transitionnumerique.com.

Souvent qualifiée de Big Data, l’explosion des données qui a ac-compagné la révolution d’Internet ces dernières années a provoqué un changement profond dans la société, marquant l’entrée dans un nouveau monde « Numérique » dont l’un des piliers technologiques est Hadoop.

Ce livre a pour objectif d’aider le lecteur à saisir les principes qui sont à la base d’Hadoop et de ses composants, de l’aider à monter en compétences sur Hadoop et également d’attirer son attention sur toutes les opportunités offertes par le Numérique. Il s’adresse à toute personne (consultants, data scientists, chargés d’études, étu-diants, responsables techniques…) impliquée dans l’utilisation des données. Des compétences de base dans le domaine des bases de données, de la programmation et du SQL sont un prérequis nécessaire pour la bonne lecture du livre.

Les premiers chapitres présentent l’architecture de l’infrastruc-ture d’Hadoop, son fonctionnement et le MapReduce. Ensuite, l’auteur présente les principes du stockage des données et montre la relation entre ces principes, le HDFS et Hadoop. Les chapitres qui suivent traitent des évolutions d’Hadoop avec un accent parti-culier sur le YARN. Dans un chapitre dédié, l’auteur traite également l’intégration du SQL dans Hadoop. Par la suite, il expose les pro-blématiques du streaming, présente les principes du traitement en streaming et en temps réel, et montre comment Storm implé-mente ces principes. Enfin, le livre se termine par un chapitre sur les différentes distributions Hadoop et un chapitre sur la transition Numérique.

Pour faciliter la compréhension des principes exposés, chaque chapitre s’achève par un rappel des points clés. Un questionnaire permet également au lecteur de vérifier et consolider ses acquis.

Pour plus d’informations :

Introduction • Contexte de création d’Hadoop • Architecture  in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS • Fu-tur d’Hadoop : limites d’Hadoop et YARN • SQL dans Hadoop • Streaming 101 • Apache Storm • Adoption d’Hadoop • Transition numérique • Conclusion • Liens et références utiles • Réponses des guides d’étude

Les chapitres du livre

Juvénal CHOKOGOUE

Hadoop Devenez opérationnel dans le monde du Big Data

Had

oop

Dev

enez

opé

rati

onne

l da

ns le

mon

de d

u B

ig D

ata

Page 2: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

1Table des matières

Introduction1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2. Buts et objectifs de l’ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3. À qui s’adresse cet ouvrage ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4. Comment lire cet ouvrage ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5. Ce que ce livre n’est pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

6. Précisions de l’auteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

7. Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

8. Dédicace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Chapitre 1Contexte de création d’Hadoop

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2. Contexte d’Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3. Approche conceptuelle d’Hadoop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4. Qui utilise Hadoop ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.1 Effervescence des projets impliquant l’utilisation

d’Hadoop en Europe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.2 Cas d’utilisation d’Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Chapitre 2Architecture infrastructurelle d’Hadoop

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2. Types d’architectures distribuées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.1 Architectures délocalisées ou client/serveur . . . . . . . . . . . . . . . . . . . . . 28

2.1.1 Architecture client/serveur à deux niveaux (two-tiers) . . . . . . 282.1.2 Architecture client/serveur à trois niveaux (three-tiers). . . . . . 30

2.2 Architectures distribuées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.2.1 Cluster computing ou grappe de calcul . . . . . . . . . . . . . . . . . . . 332.2.2 Grid computing ou grille de calcul . . . . . . . . . . . . . . . . . . . . . . . 36

Page 3: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

2Devenez opérationnel dans le monde du Big Data

Hadoop

2.3 Caractéristiques du cluster computing . . . . . . . . . . . . . . . . . . . . . . . . . 372.3.1 Scalabilité horizontale : le facteur clé d’adoption du cluster . . 372.3.2 Tolérance aux pannes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.3.3 Haute disponibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.3.4 Mesure de la disponibilité d’un système. . . . . . . . . . . . . . . . . . . 43

3. Modes de partage des ressources dans le cluster . . . . . . . . . . . . . . . . . . . . . . 453.1 Shared-nothing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.2 Shared-memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.3 Shared-disk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4. Modes de communication des nœuds dans le cluster . . . . . . . . . . . . . . . . . . 494.1 Modèle maître/esclave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.2 Modèle peer-to-peer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5. Modes de traitement de données dans le cluster . . . . . . . . . . . . . . . . . . . . . . 525.1 Traitement sur disque ou batch processing . . . . . . . . . . . . . . . . . . . . . 535.2 Traitement en mémoire ou in-memory processing . . . . . . . . . . . . . . . 55

6. Types de parallélismes des calculs dans un cluster . . . . . . . . . . . . . . . . . . . . 576.1 Parallélisme asynchrone simultané . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586.2 Parallélisme pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606.3 Parallélisme indépendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7. Choix architecturaux d’un cluster Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . 63

8. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

9. Guide d’étude du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669.1 Présentation des guides d’étude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669.2 Comment utiliser le guide d’étude ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

10. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Chapitre 3MapReduce

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

2. Mapreduce : un nouveau paradigme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

3. Détails conceptuels des phases du MapReduce . . . . . . . . . . . . . . . . . . . . . . . 753.1 Phase Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753.2 Phase Shuffle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Page 4: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

3Table des matières

3.3 Phase Reduce. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4. Détails techniques de l’exécution du MapReduce dans un cluster . . . . . . . 80

5. Exemples d’application du MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825.1 Calcul d’un index inversé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.2 Jointure de deux tables relationnelles . . . . . . . . . . . . . . . . . . . . . . . . . . 855.3 Exemple de patron de conception du Map/Reduce en Python . . . . . . 87

6. Modèles alternatifs au MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886.1 Tez : le moteur d’optimisation du MapReduce . . . . . . . . . . . . . . . . . . 906.2 Spark : le moteur in-memory distribué . . . . . . . . . . . . . . . . . . . . . . . . . 926.3 Architectures λ : la couche Streaming du MapReduce . . . . . . . . . . . . 93

7. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

8. Guide d’étude du chapitre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

9. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Chapitre 4Hadoop

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

2. Spécificités d’un cluster Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042.1 « Conscience des casiers » des nœuds du cluster (rack awareness) . . 1062.2 Localisation des données dans le cluster (data locality) . . . . . . . . . . . 107

3. Détails d’exécution du MapReduce dans un cluster Hadoop. . . . . . . . . . . 108

4. Gestion des défaillances dans un cluster Hadoop . . . . . . . . . . . . . . . . . . . . 1144.1 Gestion de la défaillance du nœud de référence . . . . . . . . . . . . . . . . . 1144.2 Gestion de la défaillance des nœuds de données . . . . . . . . . . . . . . . . 1154.3 Gestion des « retardataires » (stragglers) . . . . . . . . . . . . . . . . . . . . . . . 115

5. Hadoop Streaming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

7. Guide d’étude du chapitre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

8. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Page 5: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

4Devenez opérationnel dans le monde du Big Data

Hadoop

Chapitre 5HDFS

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

2. Pourquoi a-t-on besoin d’un système de fichiers ?. . . . . . . . . . . . . . . . . . . . 1242.1 Principes de stockage des données sur le disque dur. . . . . . . . . . . . . . 1252.2 Principes de stockage des données dans un cluster. . . . . . . . . . . . . . . 129

2.2.1 Principes de stockage des données dans un cluster shared-disk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

2.2.2 Principes de stockage des données dans un cluster shared-nothing. . . . . . . . . . . . . . . . . . . . . . . . . 133

3. Définition du HDFS dans le cluster Hadoop . . . . . . . . . . . . . . . . . . . . . . . . 1363.1 Définition et rôle du HDFS dans le cluster . . . . . . . . . . . . . . . . . . . . . 1363.2 Processus de maintien de la haute disponibilité du cluster . . . . . . . . 1393.3 Interactivité avec le HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

5. Guide d’étude du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

6. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

Chapitre 6Futur d’Hadoop : limites d’Hadoop et YARN

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

2. Limites d’Hadoop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1482.1 Modèle de calcul d’Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1482.2 HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1482.3 Haute disponibilité du cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1492.4 Sécurité du cluster. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

3. YARN et développements en cours sur Hadoop . . . . . . . . . . . . . . . . . . . . . 1513.1 Définition du YARN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1513.2 Fonctionnement du YARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1543.3 Fédération HDFS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

5. Guide d’étude du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

6. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

Page 6: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

5Table des matières

Chapitre 7SQL dans Hadoop

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

2. Étude de l’écosystème Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

3. Langages d’abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1673.1 Hive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

3.1.1 Infrastructure technique de Hive . . . . . . . . . . . . . . . . . . . . . . . 1693.1.2 Écriture des requêtes HiveQL . . . . . . . . . . . . . . . . . . . . . . . . . . 171

3.2 Pig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

4. Moteurs natifs SQL sur Hadoop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784.1 Fonctionnement des bases de données parallèles (MPP DB) . . . . . . . 179

4.1.1 Architecture des bases de données parallèles . . . . . . . . . . . . . . 1804.1.2 Exécution des requêtes SQL

dans les bases de données parallèles . . . . . . . . . . . . . . . . . . . . . 1854.2 Fonctionnement des moteurs natifs SQL sur Hadoop. . . . . . . . . . . . 1894.3 Impala : le moteur SQL sur Hadoop de Cloudera. . . . . . . . . . . . . . . . 191

5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

6. Guide d’étude du chapitre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

7. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

Chapitre 8Streaming 101

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

2. Domaine temporel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

3. Approches de traitement streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093.1 Approche batch du traitement streaming. . . . . . . . . . . . . . . . . . . . . . 210

3.1.1 Batch par fenêtrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2103.1.2 Batch par sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

3.2 Approche continue du traitement streaming . . . . . . . . . . . . . . . . . . . 2113.2.1 Fenêtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2123.2.2 Techniques de traitement événement par événement . . . . . . 2143.2.3 Techniques de traitement agnostiques

au temps (time-agnostic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Page 7: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

6Devenez opérationnel dans le monde du Big Data

Hadoop

3.2.4 Techniques d’approximation . . . . . . . . . . . . . . . . . . . . . . . . . . 2153.2.5 Techniques de fenêtrage par temps de traitement . . . . . . . . . 2163.2.6 Techniques de fenêtrage par temps d’événement . . . . . . . . . . 217

4. Idempotence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2194.1 Nature du traitement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

4.1.1 Traitements de nature déterministe . . . . . . . . . . . . . . . . . . . . . 2204.1.2 Traitements de nature aléatoire . . . . . . . . . . . . . . . . . . . . . . . . 221

4.2 État. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2224.2.1 Définition de la notion d’état . . . . . . . . . . . . . . . . . . . . . . . . . . 2224.2.2 Utilisation ou non de l’état . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2234.2.3 Mécanisme de sauvegarde de l’état. . . . . . . . . . . . . . . . . . . . . . 225

5. Disponibilité d’un système streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

7. Guide d’étude du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

8. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

Chapitre 9Apache Storm

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

2. Définition de Storm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

3. Fonctionnement de Storm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

4. Topologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2424.1 Philosophie et fonctionnement des topologies . . . . . . . . . . . . . . . . . . 2424.2 Topologies DRPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

5. Utilisation de Storm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

6. Storm et Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496.1 Storm-YARN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496.2 Storm et architecture λ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

7. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

8. Guide d’étude du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

9. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

Page 8: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

7Table des matières

Chapitre 10Adoption d’Hadoop

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

2. Distributions Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

3. Distribution Cloudera d’Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

4. Distribution Hortonworks d’Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

5. Distribution MapR d’Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

6. Tableau récapitulatif des outils proposés. . . . . . . . . . . . . . . . . . . . . . . . . . . 268

7. Guide de sélection d’une distribution Hadoop . . . . . . . . . . . . . . . . . . . . . . 270

8. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

9. Guide d’étude du chapitre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

10. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

Chapitre 11Transition numérique

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

2. Changement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2822.1 Principes qui régissent le changement. . . . . . . . . . . . . . . . . . . . . . . . . 283

2.1.1 Principe 1 : le changement est un processus, pas un événement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

2.1.2 Principe 2 : le changement annonce son arrivée par des signes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

2.1.3 Principe 3 : le changement contient une opportunité qui lui est inhérente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

2.1.4 Principe 4 : le changement est un processus inéluctable. . . . . 2862.2 Clés qui donnent accès aux opportunités du changement . . . . . . . . 287

2.2.1 Clé 1 : évitez le comportement de la grenouille - le changement est processus . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

2.2.2 Clé 2 : évitez le comportement du crabe - le changement est inéluctable. . . . . . . . . . . . . . . . . . . . . . . . . . 290

2.2.3 Clé 3 : évitez la présomption - tout change . . . . . . . . . . . . . . . 2912.2.4 Clé 4 : changez votre perception - le changement est normal 292

Page 9: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

8Devenez opérationnel dans le monde du Big Data

Hadoop

2.2.5 Clé 5 : soyez intentionnel - le changement contient une opportunité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

3. Transition vers le Numérique et Hadoop. . . . . . . . . . . . . . . . . . . . . . . . . . . 2983.1 Caractéristiques de l’ère numérique. . . . . . . . . . . . . . . . . . . . . . . . . . . 299

3.1.1 Âge de l’information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.1.2 Âge de la communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3003.1.3 Âge de la globalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

3.2 Pourquoi apprendre Hadoop ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3043.2.1 Raison 1 : apprendre Hadoop vous positionne en pionnier . . 3053.2.2 Raison 2 : apprendre Hadoop hausse

votre valeur professionnelle. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3063.2.3 Raison 3 : apprendre Hadoop vous permet de couvrir

la majorité des problématiques de traitement de données . . . 3063.3 Quelques conseils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

3.3.1 Profils métier Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3073.3.2 Certifications éditeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3113.3.3 Masters spécialisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3133.3.4 Kaggle et meetup Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

5. Guide d’étude du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

6. À retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

Liens et références utiles1. Liens utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

2. Bibliographie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

Page 10: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

9Table des matières

Réponses des guides d’étude1. Guide d’étude du chapitre Architecture infrastructurelle d’Hadoop . . . . . 329

2. Guide d’étude du chapitre MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

3. Guide d’étude du chapitre Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

4. Guide d’étude du chapitre HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

5. Guide d’étude du chapitre Futur d’Hadoop : limites d’Hadoop et Yarn . . 340

6. Guide d’étude du chapitre SQL dans Hadoop . . . . . . . . . . . . . . . . . . . . . . . 344

7. Guide d’étude du chapitre Streaming 101 . . . . . . . . . . . . . . . . . . . . . . . . . . 351

8. Guide d’étude du chapitre Apache Storm . . . . . . . . . . . . . . . . . . . . . . . . . . 357

9. Guide d’étude du chapitre Adoption d’Hadoop . . . . . . . . . . . . . . . . . . . . . 359

10. Guide d’étude du chapitre Transition numérique . . . . . . . . . . . . . . . . . . . . 361

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

Page 11: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

163

Chapitre 7SQL dans Hadoop

SQL dans Hadoop1. Introduction

« La valeur d’une technologie est proportionnelle au carré du nombre de personnes quil’utilise. » (loi de Metcalfe)La solution conceptuelle au problème du traitement de données dans l’économie nu-mérique est la suivante : les traitements/calculs doivent être divisés en tâches et leurexécution doit être parallélisée dans un cluster d’ordinateurs complètement tolérantaux pannes. Dès lors, l’approche de centralisation qui a prévalu jusqu’ici est tout sim-plement inenvisageable. La tolérance aux pannes est fournie par un tout nouveau typede système de fichiers appelé "Système de Fichiers distribué" (DFS), et le découpage etle parallélisme des tâches se font à l'aide d'un nouveau modèle de programmation ap-pelé le MapReduce. Une application générique de gestion de ressources comme leYARN ou MESOS permet d’aller au-delà du MapReduce et d’utiliser d’autres modèlesde calcul sur le cluster. Hadoop, l’implémentation MapReduce la plus populaire et laplus mature du marché, est en passe de devenir le standard de facto dans l’ère numé-rique. Nous pouvons dire sans prendre de risque qu’Hadoop va devenir la plateformede traitement de données par défaut des utilisateurs, un peu comme Excel est progres-sivement devenu le logiciel par défaut d’analyse de données. Problème : à la différenced’Excel, Hadoop n’a pas été, à la base, conçu pour être utilisé par les analystes métier,mais par les développeurs. Nous entendons par analyste métier toute profession liéeà un métier qui implique de près ou de loin le traitement de données. Par exemple, lestatisticien, l’analyste marketing, l’analyste de crédit, le contrôleur de gestion, lecomptable, l’analyste financier… Selon la loi de Metcalfe, la valeur d’un standard estproportionnelle au carré du nombre de systèmes qui l’utilise.

Page 12: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

© E

diti

ons

ENI -

All

righ

ts r

eser

ved

164Devenez opérationnel dans le monde du Big Data

Hadoop

Nous pouvons contextualiser cette citation en disant que la valeur d’une technologie estproportionnelle au carré du nombre de personnes qui l’utilise. En d’autres termes, l’adoptionà grande échelle et le succès d’Hadoop ne dépendent pas des développeurs, mais desanalystes métier ! La fondation Apache a bien compris cela, c’est pourquoi, depuisqu’elle a repris Hadoop en 2009, elle s’évertue à rapprocher le plus que possible leMapReduce et ses dérivés des utilisateurs métier. Le marché étant fortement concur-rentiel, la réponse des éditeurs logiciels ne s’est pas fait attendre. Ainsi, sur le marché,deux catégories d’acteurs ont pris à cœur cet objectif : le monde de l’open source, cen-tralisé autour de la fondation Apache, et le monde des éditeurs logiciels. Les deuxoffrent un ensemble d’outils autour d’Hadoop qu’il est aujourd’hui raisonnable dequalifier d’écosystème Hadoop. Dans ce chapitre, vous allez avoir un aperçu desoutils qui constituent l’écosystème Hadoop, et vous verrez en quoi ces outils facili-tent l’adoption d’Hadoop par un public non développeur. Puis il sera question del’exploitation de SQL (Structured Query Language) sous Hadoop. Pourquoi SQL surHadoop ? Tout simplement parce que SQL est le langage favori des utilisateurs métieret que pour qu’Hadoop séduise le cœur des analystes métier, il faut qu’il donne la pos-sibilité à ceux-ci d’utiliser leur langage favori. Ce qui est chose faite avec les outilscomme Hive, Pig, Impala ou encore Apache Phoenix.

2. Étude de l’écosystème Hadoop

Hadoop est une plateforme qui implémente le modèle de calcul MapReduce et fournitun système de fichiers distribué redondant, fiable et optimisé pour la gestion desfichiers volumineux : le HDFS. En réalité, Hadoop est un ensemble de classes écritesen Java pour la programmation des tâches MapReduce et HDFS. Ces classes peuventtout aussi bien s’écrire dans d’autres langages tels que C#, Scala, etc. Ces classes per-mettent à l'analyste d'écrire des fonctions qui vont traiter les données sans avoir à sepréoccuper de la façon dont ces fonctions sont distribuées et parallélisées dans le clus-ter. Pour tirer le meilleur parti d'un cluster Hadoop, la fondation Apache a inclus dansHadoop une série de logiciels et d'outils. Cet ensemble forme aujourd'hui ce qu'il estjudicieux d'appeler l'écosystème Hadoop ou le framework Hadoop. Pourquoi ? Parce quesans ces outils, il reviendrait à chaque entreprise en fonction de son besoin, de déve-lopper elle-même des outils compatibles avec Hadoop afin de déployer ses solutionssur le cluster ; ce qui serait une "daunting task" (tâche herculéenne).

Page 13: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

165SQL dans HadoopChapitre 7

Actuellement, pas mal de développeurs sont en train de travailler sur l'écosystèmeHadoop et offrent leurs travaux à la fondation Apache. Yahoo! a développé ZooKeeper,un service de coordination distribué, qu’il a donné à la fondation Apache Cloudera adéveloppé le moteur de calcul SQL massivement parallèle Impala et l’a passé à la fon-dation Apache. LinkedIn a développé un système de messagerie publish/subscribedistribué, Kafka, etc. C’est la contribution de tous ces acteurs qui constitue aujourd’hui l’écosystèmeHadoop. L'écosystème Hadoop fournit une collection d'outils et de technologies spé-cialement conçus pour faciliter le développement, le déploiement et le support des so-lutions Big Data. La définition de cet écosystème est importante, car elle facilitel'adoption d'Hadoop et permet aux entreprises de surmonter les défis du Numérique.L’écosystème Hadoop est constitué d’outils qui peuvent être rangés par catégories enfonction de la tâche que chacun prend en charge. Quatorze catégories d’outils peu-vent être distinguées : les langages d’abstraction (Hive, Pig, Cascading), SQL surHadoop (Impala, Phoenix, HawQ), les modèles de calcul (MapReduce, Spark,Mahout, Hama, Tez), les outils de traitement en temps réel (Storm, Samza, S4), lesbases de données (HBase, Cassandra), les outils de gestion des données en streaming(Kafka, Flume), les outils d’intégration des données (Sqoop), les outils de coordinationde workflows (Oozie), les outils de coordination de services distribués (ZooKeeper),les outils d’administration de clusters (Ambari), les systèmes de fichiers distribués(HDFS), les gestionnaires de ressources (YARN, Mesos), les outils d’indexation decontenu (Lucy, Solr, Lucene) et les interfaces utilisateur (HUE). Un écosystèmeHadoop classique est composé d’un produit de chaque catégorie. La figure suivanteillustre la composition d’un écosystème Hadoop.

Page 14: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

© E

diti

ons

ENI -

All

righ

ts r

eser

ved

166Devenez opérationnel dans le monde du Big Data

Hadoop

Figure 33 : Aperçu de la cartographie de l’écosystème Hadoop.

Nous allons maintenant passer au vif du sujet : SQL sur Hadoop. Il existe deux façonsd’exploiter SQL dans Hadoop : soit vous utilisez les langages d’abstraction, soit vousutilisez les moteurs natifs SQL massivement parallèles. Ces deux types d’outils, mêmes’ils ont la même fonction, sont radicalement différents dans leur structure et leurmode de fonctionnement. Nous allons commencer par l’étude des langages d’abstrac-tion.

Attention ! Les outils de l’écosystème Hadoop varient beaucoup. Certainsoutils sont ajoutés, d’autres sont modifiés et d’autres sont simplementsupprimés. Tous les outils que nous avons cités ici ne tiennent pas comptedes projets en cours d’incubation. Les projets en cours d’incubation sont descontributions logicielles qui n’ont pas encore été testées et validées par lafondation Apache. Considérez donc cet écosystème comme un guide illus-tratif et non exhaustif.

Page 15: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

167SQL dans HadoopChapitre 7

3. Langages d’abstraction

Il y a des raisons de croire que le MapReduce va devenir le mode normal de traitementdes données dans l’ère numérique et donc qu’Hadoop va devenir l’outil par défaut dutraitement de données. Le problème est que le MapReduce est un langage de très basniveau, c'est-à-dire très proche de la machine. Il implique que le développeur sache in-teragir avec le cluster, ce qui peut être très difficile pour un développeur néophytedans le monde du traitement parallèle, ou pour des utilisateurs métier. L'un desmoyens de simplifier le développement MapReduce, et Hadoop en général, consiste àfournir ce qu'on appelle un langage d'abstraction. Un langage d'abstraction est unlangage à syntaxe relativement proche du langage humain qui permet d'exprimer desproblèmes métier sous forme de requêtes simples. L'abstraction vient du fait que lorsque l'utilisateur exprime son besoin sous formed'une requête, cette requête est transformée en instructions machine. Ainsi, le langaged'abstraction n'est en réalité qu'une couche qui masque la complexité d'expression desproblèmes en langage de bas niveau comme le ferait un développeur. Plus le niveaud'abstraction offert par le langage est élevé, et plus on est éloigné de la machine, ce qui est plussimple pour les utilisateurs. La fondation Apache fournit pour le moment trois langagesd'abstraction pour le MapReduce : Hive, Pig et Cascading. Ces trois langages,conçus pour un public non développeur, permettent d'exprimer des jobs MapReducedans un style de programmation similaire à celui de SQL, familier aux utilisateurs. Parla suite, ces langages transforment les requêtes écrites en jobs MapReduce qui sontsoumises au cluster pour leur exécution. Globalement, Hive offre un langage de plushaut niveau d'abstraction que Pig et Pig offre une abstraction de plus haut niveau queCascading. Dans cet ouvrage, nous étudierons uniquement SQL, Hive et Pig. Casca-ding étant de trop bas niveau pour les analystes métier uniquement habitués à SQL.La figure suivante illustre la relation entre le niveau d’abstraction des langages, laproximité de l’utilisateur vis-à-vis du MapReduce, et la complexité de programma-tion. Bien évidemment, plus on "s’éloigne" du MapReduce, mieux pour l’utilisateur.

Page 16: Hadoop - fnac-static.com · 2017. 4. 14. · Introduction • Contexte de création d’Hadoop • Architecture in-frastructurelle d’Hadoop • MapReduce • Hadoop • HDFS •

© E

diti

ons

ENI -

All

righ

ts r

eser

ved

168Devenez opérationnel dans le monde du Big Data

Hadoop

Figure 34 : Relation entre le niveau d'abstraction du langage et proximité vis-à-vis du cluster.Plus le niveau d’abstraction est élevé, plus le langage est "proche" de l’utilisateur.

Attention, plus le niveau d'abstraction d'un langage est élevé et plus le niveau decomplexité des requêtes qu’on peut exprimer est faible. C'est pourquoi il est béné-fique que vous appreniez à la fois Hive et Pig. Ainsi, si vous n'arrivez pas à exprimervotre problème sous forme de requêtes Hive, alors vous pourrez toujours utiliser Pig.Si vous voulez aller plus loin, vous pouvez aussi apprendre Cascading.