|
|
Stratégies d'optimisation de requêtes SQL dans un
écosystème Hadoop
|
Sébastien FRACKOWIAK
|
15/01/2018
|
SOMMAIRE
SOMMAIRE
1
Remerciements
3
Résumé
4
Liste des figures et des tableaux
5
1
Introduction
7
1.1 Entrepôt et Bases de
Données Relationnelles
7
1.2 Entrepôt et Bases de
Données Big Data
7
1.3 Problématique
7
2
Hadoop
9
2.1 Histoire
9
2.2 Le composant de stockage (HDFS)
9
2.3 Le composant de traitement
(MapReduce)
10
2.3.1 Architecture Hadoop v1
10
2.3.2 Architecture Hadoop v2
11
2.3.3 Le paradigme MapReduce
12
2.4 Discussion
16
2.4.1 Du point de vue HDFS
16
2.4.2 Du point de vue YARN
17
3 SQL
sur Hadoop
19
3.1 Hive
19
3.1.1 Histoire
19
3.1.2 Architecture
19
3.2 La commande
« EXPLAIN »
20
3.2.1 Explication d'une projection
simple
21
3.2.2 Explication d'une projection avec une
restriction
23
3.2.3 Explication d'une projection avec une
restriction et une agrégation
26
3.2.4 Explication d'une jointure entre deux
tables
30
3.3 Discussion
32
3.3.1 Requête avec une restriction
32
3.3.2 Requête avec une
agrégation
32
3.3.3 Requête avec une jointure et une
agrégation
32
4
Optimisation du SQL sur Hadoop
35
4.1 Optimisation par le réglage ou
« tuning »
35
4.1.1 Utiliser Tez
35
4.1.2 Contrôler la taille des fichiers
manipulés
37
4.1.3 Agréger en amont
39
4.1.4 Réaliser un
« benchmark » significatif
39
4.2 Optimisation par la conception ou
« design »
40
4.2.1 Utiliser les tables
partitionnées
41
4.2.2 Optimiser les jointures
42
4.3 Discussion
46
5
Conclusion
47
6
Bibliographie
48
7
Annexes
49
7.1 Hadoop
49
7.1.1 Partition & Sort
détaillé
49
7.1.2 Définition de la distance entre
deux noeuds
49
7.2 SQL sur Hadoop
50
7.2.1 Gérer manuellement le
partitionnement dans une requête
50
7.2.2 Comprendre la sérialisation
sous Hadoop
50
7.3 Optimisation du SQL sur Hadoop
50
7.3.1 Exemple de WordCount avec Tez
50
7.3.2 Grouper les splits avec Tez
50
REMERCIEMENTS
J'aimerais exprimer toute ma gratitude à la Direction
Solution Exploitation de la DSI des Réseaux d'Orange, en particulier
Jean-Claude Marcovici, Nadine Poinson, Jean-Marc Pageot et Serge Schembri pour
m'avoir donné l'opportunité de suivre ce cursus et les moyens de
réaliser ce mémoire.
Je voudrais remercier mon tuteur Stéphane Crozat, pour
ses conseils durant la rédaction de ce mémoire et son
enseignement en Base de Données et en Big Data, ainsi que Dominique
Lenne et Thomas Deshais pour leur soutien et leurs encouragements à
l'égard de notre promotion tout au long de ce Master.
Toute ma reconnaissance va également versmes
collègues développeurs de l'équipe Big Data Technique :
Alioune, Bastien, Christophe, Patrick et particulièrement Régis
et Thomas pour leur disponibilité.
Enfin, je remerciemon épouse pour ses précieux
conseils, ses encouragements et son soutien ainsi que mon fils, mes
beaux-parents et ma mère pour nous avoir grandementfacilités
cette année un peu particulière.
Sébastien Frackowiak
|