Hive, Calcite et Druid

Hive, Calcite et Druid

BI/OLAP est nécessaire à la visualisation interactive de flux de données:

  • Évennements issus d’enchères en temps réel
  • Flux d’activité utilisateur
  • Log de téléphonie
  • Suivi du trafic réseau
  • Évennements de pare-feu
  • Indicateur clé de performance (KPIs) applicatifs

Solutions Traditionnelles

  • RDBMS (Mysql..): ne passe pas 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 lente

Context

  • 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 avoisinner 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é sur Hive
  • Introduction d’une interface SQL à Druid
  • Executer des opération complexes sur les données Druid
  • Requêtes OLAP dans Hive
  • Demo: basée sur Hive 2.20, pas de release plannifiée, basé 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 indéxer les données dans Hive :

  • Enregistrer les sources de données Druid dans Hive quand celle-ci est déjà présente dans Druid
    STORED BY 'org.apache.hadoop.hive.druid.DruidSTorageHandler'
    TBLPROPERTIES ("druid.datasource" = "wikiticker")
  • Créer un 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 rappatrier les enregistrements dans le tuyau Hive
  • Non accès au broker dans une future version

Roadmap

  • Poussé des optimisation additionnelles dans Druid (push down optimisations)
  • Paralleliser la récupération des enregistrements (bypass broker)
  • Denormaliser le schema en étoile
  • Perspectives pour les vues materialisées de Hive avec la ré-écriture automatique des requêtes
By | 2017-07-24T21:37:14+00:00 July 14th, 2016|Uncategorized|0 Comments

About the Author:

Leave A Comment

Time limit is exhausted. Please reload the CAPTCHA.