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