PetaSky

publicité
Evaluation de requêtes
Quelques résultats préliminaires
Amin Mesmoudi
1
Les Besoins LSST en stockage et accès aux données
•
Accès
– SQL
– Possibilité de définir des fonctions ad hoc par l’utilisateur (UDF)
– Exemple: areaspec_box, angSep < dist
– 500,000 requêtes par jour
•
Objectif: mener des expérimentations avec quelques outils de gestion de données
existants
2
Phases d'expérimentations
2 To
1 To
Phase 3
Phase 2
500 Go
250 Go
PT 1.2
PT 1.1
Phase 1
3M
6M
12 M
25 M
50 M
100 M
3
Configurations
• Systèmes utilisés:
– Centralisés:
• Oracle, Postgresql et Mysql
• Taux de transfert disque: 113 Mo/s
– Distribués :
• Hive (0.11) : map/reduce & HDFS
• HadoopDB: map/reduce & DBMS
• Réseau: 1 Go/s
4
Hive et HadoopDB
HIVE*
(modified)
HIVE
RDBMS
Map/reduce
Map/reduce
HDFS
HadoopDB
Map/reduce
RDBMS
Map/red
uce
Map/red
uce
Map/re
duce
HDFS
Hive
5
Jeux de données
Table
#attributes
#records
size
PT 11 Object
227
5M
5 GB
2
109 TB
470
36 B
PT 11 Source
92
165 M
85 GB
7
3,6 PB
125
5T
PT 12 Object
229
5M
7 GB
2
109 TB
470
38 B
PT 12 Source
107
180 M
118 GB
7
3,6 PB
125
5T
PT1.2.*
250 go
PT1.2.*
500 go
PT1.2.*
1 To
PT1.2.*
2 To
#indexes
expected
size
expected
#attributes
expected
#records
6
Requêtes
• Requêtes SQL Standards: (PT 1.1, PT1.2)
7
Paramètres à mesurer (1/2)
• Tuning: Temps de chargement de données
(indexation, partitionnement, …)
• Performances: Temps total d'exécution des
requêtes
• Tolérance aux fautes: Nombre de fautes
gérées par l’outil
• Latence: temps nécessaires pour avoir la
première réponse
8
Paramètres à mesurer (2/2)
• Montée en charge (volume de données):
– PT1.1  PT 1.2
– PT 1.2 (250 Go)  PT 1.2 (250 Go)  PT 1.2 (500
Go)  PT 1.2 (1 To)  PT 1.2 (2 To)
• Evolution Matérielle:
– 3 machines  6 machines  12 machines
– 25 machines  50 machines
9
Performances – Phase 1
• Sans Index
– Prétraitement:
• HadoopDB a besoin de 120 %- 640 % du temps nécessaire pour Hive
– Performances:
1.
2.
3.
•
Avec index
–
Prétraitement:
•
•
–
Augmentation pour les requêtes utilisant des attributs qui servent comme indexes
Diminution pour les autres requêtes
Evolution matérielle:
–
•
Pas d’index pour Hive
HadoopDB: présente 12%-30 % du temps nécessaire pour le chargement des données et une augmentation de 3%-10 % par rapport
au chargement des données sans index
Performances:
•
•
•
HadoopDB > Hive : Requêtes avec quelques tuples a manipuler
Hive > HadoopDB: le plan d’exécution comporte une phase de reduce couteuse
Les autres requêtes: Dépondent de l’état des données (partitionnées, triées, ,,,)
Augmentation des performances pour les deux outils
Latence:
–
Supportée par les SGBD classiques et pas encore par la nouvelle génération des SGBD
10
Performances – Phase 2 - chargement de
données
• Hive:
250Go
500Go
1To
2 To
25
2h10
4h30
8h30
17h
50
2h10
4h30
8h30
17h
250Go
500Go
1To
2 To
25
7H17
12h40
28h55
-
50
5h40
10h40
21h45
-
• HadoopDB:
11
Performances – Phase 2 - requêtes
• Selection:
–
–
–
–
Q1: sourceid comme attribut de sélection
Q2:Objectid comme attribut de sélection
Q3:RA et Decl
Q4:scienceccdexposureid
• Groupe by:
– Q5:petite zone (ra et decl)
– Q6:large zone
• Join:
– Q7:petite zone
– Q8:large zone
– Q9:3 tables
• Order By:
– Q10: petite zone
– Q11:large zone
12
Performances – Phase 2 - sans index
• Partitionnement par défaut:
• Selection:
– HadoopDB > Hive: différence de performances de 63 % a 530 %
• Groupe by:
– Petite zone: HadoopDB > Hive: différence de performance de 1500%
– Large zone: Hive > HadoopDB: différence de performance de 270 %
• Join:
– HadoopDB ne supporte pas la jointure de plusieurs tables
– 170 % (petite zone) a 12000 % (large zone)
• Order By
– HadoopDB > Hive avec 200 % de différence
• Partitionnement avec ObjectId:
– Gain en performance pour la requête Q6
13
Performances – Phase 2 - Création d’index
• 5 indexes
• Hive:
250Go
500Go
1To
2 To
25
50 min
2h05
4h33
9h09
50
31min
1h28
3h28
7h21
• HadoopDB:
250Go
500Go
1To
2 To
25
1h
1h15
2h
-
50
1h
1h15
1h30
-
14
Performances – Phase 2 - avec index
• Hive:
– Refuse d’utiliser les index s’ils les données sélectionnées représentent une taille
importante
– Augmentation de performance jusqu’a 7000 %
– Les indexes peuvent être utilisé que pour la sélection, le group by et l’order by
– Le choix de l’index est fait manuellement (pas d’optimiseur disponible)
• HadoopDB:
– Augmentation des performances jusqu’a 900%
– Chaque SGBD essaye de trouver la meilleur stratégie d‘évaluation de la requête sans
prendre en compte le plan globale d’exécution
– Diminution de performances pour quelques requêtes (exp. Q7)
15
Merci pour votre attention
16
Téléchargement