Hive et HadoopDB

Transcription

Hive et HadoopDB
Activités du Groupe 1
Stockage et Gestion de Gros
Volumes des Données
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, …
– 500,000 requêtes par jour
•
Objectif: mener des expérimentations avec quelques outils de gestion de données
existants
2
Environnement d’expérimentation
• Matériel:
– Un système centralisé, avec 14 Go de RAM, 4 cœurs et 3 disques avec une capacité
totale de stockage de 2.5 To
– 1er cluster: 3 machines.
• Chaque machine est dotée de 4 Go, 350 Go d’espace de stockage et 2 cœurs .
– 2eme cluster: 6 machines.
• Chaque machine est dotée de 4 Go, 660 Go d’espace de stockage et 2 cœurs .
– 3eme cluster: 12 machines.
• Chaque machine est dotée de 4 Go, 660 Go d’espace de stockage et 2 cœurs .
• Jeu de données PT1.1:
– 2 tables: 90 Go
• Jeu de données PT1.2:
– 22 tables: 220 Go (seulement 146 Go de données utilisés )
• Jeu de données Winter 13:
– 18 tables: 3 To (1 To a été utilisé)
• Requêtes:
– 10 requêtes standard SQL (selection, projection, join, group by, order by, count)
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
3 clusters de 3, 6 et 12 machines
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
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
6
Paramètres à mesurer (2/2)
• Montée en charge (volume de données):
– PT1.1  PT 1.2  Winter 13
• Evolution Matérielle:
– 3 machines  6 machines  12 machines
7
Tests effectués
• Performances:
– 1ère phase: Hive et HadoopDB (hashage ObjectId (pour Object) et SourceId(pour Source))
– 2ème phase: Hive et HadoopDB (hashage ObjectId pour les deux)
– 3ème phase: Hive, HadoopDB, Mysql, oracle et postgresql
• Evolution matérielle:
– Comparaison de Hive et HadoopDB avec 3 configurations :
• 3 machine, 6 machines et 12 machines
– Performances
– Tolérance aux fautes:
• Requêtes de > 2h
• Hive et HadoopDB
– Latence
• SGBD (classiques) centralisés et SGBD distribués
8
Jeux de données
Table
#attributes
#records
size
#indexes
expected
size
expected
#attributes
expected
#records
PT 1.1 Object
227
5M
5 Go
2
109 To
470
36 B
PT 1.1 Source
92
165 M
85 Go
7
3,6 Po
125
5T
PT 1.2 Object
229
5M
7 Go
2
109 To
470
38 B
PT 1.2 Source
107
180 M
139 Go
7
3,6 Po
125
5T
Winter 13
RunDeepForcedsource
86
1,4 B
1 To
8
9
Requêtes (1/2)
10
Requêtes (2/2)
• Requêtes SQL Standards: (PT 1.1, PT1.2)
• Requêtes avec UDF: (Winter 13)
– fluxToAbMag (conversion d’un ’’spectral flux density’’ en ’’AB magnitude’’http://en.wikipedia.org/wiki/AB_magnitude), areaspec_box
11
Performances – 1ère phase – 3 machines
• Prétraitement:
– Hive: PT 1.1: 25 min, PT 1.2: 1 heure 30 min
(chargement du disque local vers les disques
distribués)
– HadoopDB:
Data set
PT 1.1
Global hash
Local hash
(création de 3 buckets)
(création de chunks 
1Go)
Tunning
(DBMS)
90 min
30 min
40 min
5hrs 12 min
50 min
2h
PT 1.2
100000
• Résultats
10000
1000
100
(chargement dans
SGBD)
Hive PT 1.1
HIVE PT 1.2
HadoopDB PT 1.1
10
HadoopDB PT 1.2
1
12
Performances – 1ère phase – 6 machines
• Prétraitement:
– Hive: PT 1.1: 25 min, PT 1.2: 1 heure 30 min
– HadoopDB:
Data set
Global hash
Local hash
Tunning
(DBMS)
PT 1.1
1h 13min
51sec
15 min
1h 50 min
PT 1.2
2hrs 40 min
25 min
30 min
• Résultats
10000
1000
100
Hive PT 1.1
HIVE PT 1.2
HadoopDB PT 1.1
10
HadoopDB PT 1.2
1
13
Performances – 1ère phase – 12 machines
• Prétraitement:
– Hive: PT 1.1: 25 min, PT 1.2: 1 heure 30 min
– HadoopDB:
Data set
Global hash
Local
hash
Tunning
(DBMS)
PT 1.1
43min, 32sec
8 min
17 min
PT 1.2
1h 16min, 22sec
13 min
22 min
• Résultats100000
10000
1000
Hive PT 1.1
HIVE PT 1.2
100
HadoopDB PT 1.1
HadoopDB PT 1.2
10
1
Query Query Query Query Query Query Query Query Query Query
1
2
3
4
5
6
7
8
9
10
14
Performances – 2ème phase – 3 machines
• Prétraitement:
– Hive: PT 1.1: 25 min, PT 1.2: 1 heure 30 min
– HadoopDB:
Data set
Global hash
Local hash
Tunning
(DBMS)
PT 1.1
90 min
30 min
4h
PT 1.2
5h 12 min
50 min
2h 30 min
100000
• Résultats
Hive PT 1.1
10000
HIVE PT 1.2
1000
HadoopDB PT 1.1
HadoopDB PT 1.1 with index
100
HadoopDB PT 1.2
10
HadoopDB PT 1.2 with index
1
Query Query Query Query Query Query Query Query Query Query
1
2
3
4
5
6
7
8
9
10
15
Performances – 2ème phase – 6 machines
• Prétraitement:
– Hive: PT 1.1: 25 min, PT 1.2: 1 heure 30 min
– HadoopDB:
Data set
Global hash
Local hash
Tunning
(DBMS)
PT 1.1
1h 13min
51sec
15 min
2 h 24 min
PT 1.2
2h 40 min
25 min
40 min
• résultats
10000
1000
100
Hive PT 1.1
HIVE PT 1.2
HadoopDB PT 1.1
10
HadoopDB PT 1.2
1
16
Performances – 2ème phase – 12 machines
• Prétraitement:
– Hive: PT 1.1: 25 min, PT 1.2: 1 heure 30 min
– HadoopDB:
Data set
Global hash
Local
hash
Tunning
(DBMS)
PT 1.1
43min, 32sec
8 min
27 min
PT 1.2
1h, 16min, 22sec
13 min
32 min
• Résultats
100000
10000
1000
Hive PT 1.1
HIVE PT 1.2
100
HadoopDB PT 1.1
HadoopDB PT 1.2
10
1
Query Query Query Query Query Query Query Query Query Query
1
2
3
4
5
6
7
8
9
10
17
Performances – 3ème phase(1/2)
• Prétraitement:
– Jeu de données: PT 1.1
– Mysql
• 15 h pour charger et indexer les données
– Oracle
• Tuning: 2 h
• Utilisation du réseau pour charger les données ( 1 semaine!!!!)
– Postgresql
• Tuning : 12 h
18
Performances – 3ème phase(2/2)
• Resultats:
scan
Group by
10000
index
Hive PT 1.1 3M
Hive PT 1.1 6M
1000
HadoopDB PT 1.1 with index 3M
HadoopDB PT 1.1 with index 6M
100
Mysql PT 1.1
DBMS-X PT 1.1
PostgresQL PT 11
10
1
Query 1 Query 2 Query 3 Query 4 Query 5 Query 6 Query 7 Query 8 Query 9 Query 10
19
Evolution Matérielle
• Sans index
– Hive:
100000
10000
Hive PT 1.1 3 M
1000
HIVE PT 1.1 6 M
HIVE PT 1.1 12 M
100
HIVE PT 1.2 3 M
HIVE PT 1.2 6 M
10
HIVE PT 1.2 12 M
1
– HadoopDB:
Query Query Query Query Query Query Query Query Query Query
1
2
3
4
5
6
7
8
9
10
100000
10000
HADOOPDB PT 1.1 3 M
1000
HADOOPDB PT 1.1 6 M
100
HADOOPDB PT 1.1 12 M
HADOOPDB PT 1.2 3 M
10
1
HADOOPDB PT 1.2 6 M
HADOOPDB PT 1.2 12 M
20
Evolution Matérielle
• Avec index
10000
1000
HADOOPDB PT 1.1 3 M
HADOOPDB PT 1.1 6 M
100
HADOOPDB PT 1.1 12 M
HADOOPDB PT 1.2 3 M
HADOOPDB PT 1.2 6 M
10
HADOOPDB PT 1.2 12 M
1
Query 1 Query 2 Query 3 Query 4 Query 5 Query 6 Query 7 Query 8 Query 9 Query
10
21
Tolérance aux fautes
•
•
Hadoop:
configuration
# failures
Hive – PT1.2 – 3 machines
34
Hive – PT 1.2 – 6 machines
85
Hive – PT 1.2 – 12 machines
185
HadoopDB – PT1.2 – 6 machines
40
HadoopDB – PT1.2 – 6 machines (with index)
56
Hive/HadoopDB:
•
•
•
•
Plus de sous-taches -> plus de fautes
Plus de temps d’exécution -> plus de fautes
Plus de machines -> plus de fautes
Exemple : Hive - 3M –PT1.1
–
–
SELECT * FROM source
WHERE ra >= 2.0;
339 sous-taches pour scanner la table source
22mins 8sec, 2 fautes
22
Latence
23
Winter 13 & UDF
SELECT * FROM
rundeepforcedsource WHERE
id=127111581128458576;
Requête
Temps d’exécution
Scan de toute la table
6300.458 (1 heure 45 minutes)
Identification du nombre d’objets distincts 8011.301 (2 heures 13 minutes)
Sélection dans une zone limitée
utilisation de areaspec_box
6453 (1 heure 47 minutes)
Transformation de quelques attributs
utilisation de fluxToAbMag
6436 (1 heure 46 minutes)
SELECT fluxToAbMag(flux_naive)
FROM rundeepforcedsource
WHERE
objectid=1398583353936135;
SELECT count(distinct objectid)
FROM rundeepforcedsource ;
SELECT id FROM
rundeepforcedsource WHERE
areaspec_box(coord_ra,coord_decl,55,-2,55,2)=1;
24
La suite …
• Analyser la montée en charge
•
•
Tests avec un autre jeu de données (3 To )
Implémenter quelques UDF
•
Jointure par similarité
• Test sur des clusters de 24, 48 et 96 machines
•
•
Analyser l’impact du matériel
Analyser la charge de chaque nœud
25

Documents pareils