| 
  
   | 
   | 
 
| 
 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 
 |