Hive, Calcite et Druid

Hive, Calcite et Druid

By WORMS David

14 juil. 2016

Catégories : Big Data | Tags : Analytique, Druid, Hive, Base de données, Hadoop

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

Canada - Morocco - France

International locations

10 rue de la Kasbah
2393 Rabbat
Canada

Nous sommes une équipe passionnées par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Sciencem le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.