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 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