Hive, Calcite et Druid
By WORMS David
14 juil. 2016
- Catégories
- Big Data
- Tags
- Druid
- Business Intelligence
- Base de données
- Hadoop
- Hive [plus][moins]
Vous appréciez notre travail......nous recrutons !
Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.
BI/OLAP est nécessaire à la visualisation interactive de flux de données :
- Évènements issus d’enchères en temps réel
- Flux d’activité utilisateur
- Log de téléphonie
- Suivi du trafic réseau
- Évènements de pare-feu
- Indicateur clé de performance (KPIs) applicatif
Solutions Traditionnelles
- RDBMS (Mysql..) : ne passe pas ou difficilement l’échelle, nécessité de mise en cache mais les requêtes adhoc restent lentes
- Stockage key/value (HBase…) : rapide mais préparation des données lentes
Contexte
- Créé en 2011, open-sourcé en 2012
- Construit pour l’analyse interactive
- plus de 150 contributeurs en 2016
Main Features
- Stockage orienté colonne
- Ingestion batch et temps réel
- Passage à l’échelle
- Réponse sous la seconde
Persistent storage
- Fichiers de segment partitionnés par date
- Segments doivent avoisiner le 1GB
- Si plus large, recommandé de définir des partitions plus restrictives
- Constitution d’un segment : timestamp column, dimension (example page, username, city), metrics (agrégation) and indexes (accélération des accès)
Druid + Hive
- Indexation de requêtes complexes vers Druid basée sur Hive
- Introduction d’une interface SQL à Druid
- Exécuter des opération complexes sur les données Druid
- Requêtes OLAP dans Hive
- Démo : basée sur Hive 2.20, pas de release plannifiée, basée sur Druid 0.9.1.1 et Apache Calcite 1.10.0, (master et en attente de 0.9.2)
Druid data source in Hive
2 solutions pour indexer les données dans Hive :
- Enregistrer les sources de données Druid dans Hive quand celles-ci sont déjà présentes dans Druid
STORED BY 'org.apache.hadoop.hive.druid.DruidSTorageHandler' TBLPROPERTIES ("druid.datasource" = "wikiticker")
- Créer une source de données Druid dans Hive
STORED BY 'org.apache.hadoop.hive.druid.DruidSTorageHandler' TBLPROPERTIES ("druid.datasource" = "wikiticker" AS SELECT __time, page, user, c_added, c_removed FROM src;
“_time” is timestamp, “page, user” are dimensions, “c*” are metrics
Nécessiter de partitionner les données par date.
Requétage de sources Druid depuis Hive
- Ré-écriture automatique grâce à Apache Calcite
- Utilisation du Druid Input Format pour rapatrier les enregistrements dans le tuyau Hive
- Non accès au broker dans une future version
Roadmap
- Poussée des optimisations additionnelles dans Druid (push down optimisations)
- Paralléliser la récupération des enregistrements (bypass broker)
- Dénormaliser le schéma en étoile
- Perspectives pour les vues matérialisées de Hive avec la ré-écriture automatique des requêtes