#PASSBAC 2015 – Andrew Brust – Using Hadoop with Excel and Power Query

Andrew débute la première partie de sa session en présentant Hadoop.

On parle de Big Data lorsque le volume de données dépasse les centaines de To et va jusqu’au Po ou plus. Il s’agit de données transactionnelles énormes issues en grande partie : des données financières, de logs de site web, des réseaux sociaux, des objets connectés (IoT), des données mobiles, etc. Pour pouvoir traiter et analyser ces données, un système monolytique ne suffit plus, il est nécessaire d’adopter une architecture scalable afin de pouvoir effectuer des traitements en parallèle au travers différents serveurs en cluster. C’est le principe même d’Hadoop.

Les concepts principaux à connaître sur Hadoop sont

  1. HDFS : Hadoop distributed files system : c’est le système de fichiers qui détermine où et comment les données sont distribuées et stockées sur le cluster. Les données sont répliquées sur les différents nœuds du cluster, ce qui permet :
  • d’avoir une architecture haute disponibilité (si un nœud tombe => aucune perte de données)

Distributed File System : on where data gets distributed over commodity drives on commodity servers

  • de pouvoir effectuer des traitements en parallèle
  • d’ajouter simplement de la puissance de calcul en ajoutant de nouveaux nœuds au cluster (scale-out)
  1. Map Reduce : c’est l’opération qui permet de parser l’ensemble des données en parallèle pour n’extraire que celles dont vous avez besoin. Cette opération se décline en deux temps :
  • Map step : les données sont parsées en parallèle sur l’ensemble des nœuds du cluster
  • Reduce step : retourne toutes les données associé à la même clé et les agrège

Ces opérations se font en java.

  1. Schema-on-Read : lorsque vous traiter des données non structurées, le schéma est imposé lors de la requête et dépend du contexte par exemple :
  • Si vous scanner un livre, les valeurs à retournées sont-elles les mots, les lignes, les pages, les chapitres ?
  • Est-ce que la date et l’heure sont deux champs séparés ou bien un seul …

Pig et Hive sont les deux outils qui permettront d’effectuer cette interprétation de schéma à la volée.

Andrew continue ensuite par la présentation de la stack Hadoop V1 puis V2. Je ne m’attarderai quant à moi qu’à la V2.

HadoopStack

Je complète juste par quelques annotations sur les éléments les plus marquants de cette stack :

  • HDFS : Hadoop Distributed File System
  • YARN : ressource governor
  • HBASE : base de données avec stockage en colonne
  • Hive et Pig : couche d’abstraction permettant de faire du Map Reduce
  • SCOOP : utiliser pour l’import/export RDBMS bidirectionnel
  • Sparl SQL, Impala et Tez permettent de faire du SQL interactif
  • Lucine et SolR sont des moteurs de recherche
  • Sparl MLib et Mahout : permettent de faire du machine learning/ Data Mining
  • Spark Streaming, Storm et Kafka : sont utilisés pour le Streaming Data

Les différentes distributions d’Hadoop sont Cloudera, Hortonworks HDP, MapR, IBM InfoSphere, Pivotal HD et Microsoft HDInsight. Elles utilisent toutes le même noyau Hadoop décrit précédemment.

Microsoft HDInsight a été développé avec Hortonworks et permet d’avoir une distribution HDP sous Windows. Les spécificités de cette distribution sont :

  • Windows Azure HDInsight
  • Azure Blobs Storage
  • L’accessibilité via du PowerShell et des cmdlets HDInsights
  • Une interface web permettant d’exécuter des requêtes Hive et de monitorer des jobs

S’en vient alors les démos :

  • Mise en place du cluster sous Azure
    • Création d’un cluster HDInight via le portail MS Azure => cela se fait en quelques clics, en configurant soit même le type de plateforme souhaitée (nombre de nœud dans le cluster, la région, le type de vm (core CPU + mémoire), un username, l’accès en RDP, le stockage). Le cluster Hadoop est créé et accessible quelques minutes
    • Connexion au cluster HDP via l’interface Azure
    • Utilisation de la console HDIngith Query Console vous permettant d’exécuter des requêtes Hive
    • Revue des solutions proposées avec ou sans sample data)
  • Hadoop commands (cf. slide pris en photo sur tel)
  • Connexion au cluster hadoop en rdp via la console Azure,
    • ouverture d’une fenêtre de command hadoop et quelques exemples de commandes Hadoop
    • Création d’un job executant une requête hive
  • Récupération de données HDP via Excel
    • Via le driver ODBC
  • Pig est un combo entre un requêteur et un ETL, il permet de travailler avec des données structurées et non structurées. Andrew nous livre quelques exemples de requêtes Pig.
  • Démo Power Query sur une source de données HDFS
  • Power Bi 2.0
    • Pas de dépendance avec Office 365
    • Moins cher : freemium model, Pro version pour $10/user/month
    • Across platform experience (iOS, Android, Windows)
  • Démo Power BI Designer
    • Connexion à HD Insight via Power Query, quelques transformations, puis passage en mode reporting/dahsboarding sur Power BI Site
  • Démo Tableau
    • Connexion à HD Insight et exécution de la même requête
    • Travail sur les mêmes données….

Andrew n’a pas eu le temps de faire d’autre démo avec d’autres outils comme Qlik Sense ou Jaspersoft, peu importe, quel que soit l’outil utilisé, les données Hadoop sont très facilement utilisables et exploitables.

Il ne vous reste plus qu’à aller sur le site d’Hortonworks pour aller télécharger la sandbox et jouer avec. Ou bien aller directement sur Azure.

[JSS 2014] Session : Deep Dive : Hive

Speaker : David Joubert & Julien Buret
Level : 400

Objectif : Découvrir la technologie Hive et démontrer la convergence Datawarehouse et Big Data

Introduction :
Intégré par défaut sur la plateforme Hadoop, Hive est un lien manquant entre SQL et Big Data dans l’éco-système.
Langage, stockage, exécution, cet entrepôt de données Big Data s’est toujours inspiré de ses équivalents relationnels dans son évolution.
Nous allons présenter Hadoop dans un premier temps puis Hive et son historique, type de stockage et quelques comparaisons de performance.
Le Big Data n’est pas au programme de cette session, ainsi que l’analyse en temps réel.

Hadoop :
Hadoop est un Framework permettant de développer des applications distribuées et scalables. Ce n’est pas une base. Hadoop utilise un système de fichiers distribués (HDFS) et le moteur de calcul MapReduce.
Sa mauvaise performance sur les données en temps réel est un inconvénient. Beaucoup d’évolutions dépendent de cette problématique.

Hive :
Historiquement, Hive était un projet interne à Facebook lancé en 2007. Il a été rendu open source en 2009. Aujourd’hui, il est possible de requêter en SQL sur Hadoop (HiveQL).
Hive n’est pas un moteur de base de données. C’est une application cliente de Hadoop qui permet de générer des jobs MapReduce à partir d’un langage plus performant.
Hive se compose de 2 principaux modules :

  • Hive METASTORE : base relationnelle pour indiquer comment est structurée une table dans Hadoop (HDFS)
  • Hive DRIVER : interprête les requêtes SQL fournies par le client et les transforme en job MapReduce (M/R)

DeepHive_HiveFonctionnementGlobal

Exemple de plan d’exécution :

DeepHive_MR

Démo Hive : Création d’une table, dite externe (ne copie pas les données sur disque)
Petite comparaison SQL VS Hive

Une démo rapide pour montrer la création d’une table externe :
CREATE EXTERNAL TABLE tableName (

);

Quel usage de Hive ?
On stocke le maximum de données dans Hadoop. Hive permet de traiter les use-cases complexes qu’on ne peut pas gérer dans les datawarehouses. L’inconvénient, c’est qu’il est très difficile d’avoir des requêtes interactives dues à ses latences.
Plusieurs projets ont été développés afin de gérer ces requêtes interactives (Presto, Apache, HawQ, …).

DeepHive_QuelUsage
« schema on read » = il n’y a pas de validation à l’insertion. Elle se fait à la lecture

Nouveaux moteurs :
MapReduce, c’est fini pour Hadoop. De nouveaux moteurs d’exécution ont fait leur apparition : Tez, Spark, etc. Nous allons nous focaliser sur Tez.
Tez supporte le M/R et les jointures. Il permet de construire des plans d’exécutions plus complexes que M/R (pipelining, utilisation de la mémoire à la place du disque, multiple étapes de Reduce). L’idée est de ne garder que les M/R sans écrire dans HDFS.

Démo : Hive M/R VS Hive Tez
Petite comparaison de performance entre les deux moteurs.
Résultat : Tez est environ 2 fois plus rapide que M/R.

Hive sur les données brutes :
Hive peut analyser des formats de type Text. Par contre, le parsing est coûteux et il y a un problème de compression.
Le format orienté colonne (Oriented Row Columnar, ORC) permet de stocker les données en colonne. Cela améliore les performances en lecture, écriture et traitement, notamment grâce à la compression et l’encodage des données. Grâce à cela, le traitement massif des données est plus adapté pour Hive.

Démo : Stockage natif VS Stockage en colonne

  • Création de table de type ORC : ajouter « STORED AS ORC » à la fin de la requête CREATE TABLE
  • Gain de temps d’environ 4 fois plus en stockage colonne

Vectorization :
Hive traite les données ligne à ligne alors qu’avec la Vectorization, c’est bloc à bloc.
Le Query Engine a été modifié pour traiter des « vecteurs de colonne ». Nous avons une meilleure utilisation du CPU et des caches.
L’arbre d’exécution a été optimisé (Partition pruning, Projection pruning, filter push/down). Il n’y a pas d’optimisation liée à la donnée. L’ordre des tables dans les jointures est très important.

Cost-Based Optimizer (CBO) :
Le CBO utilise les statistiques de base de données pour générer plusieurs plans d’exécution et choisir le moins coûteux.

Démo : Performance avec et sans CBO

  • Ajouter « EXPLAIN » devant la requête pour afficher le plan d’exécution
  • On désactive CBO, active le moteur Tez, sans vectorization : 136s pour 164 lignes
  • On désactive CBO, active le moteur Tez, avec vectorization : 80s pour 164 lignes
  • On créé les stats, active CBO : 69s pour 164 lignes
    • le plan d’exécution est différents des 2 précédentes configurations
    • il y a moins de mapper

Pourquoi convergence ?

DeepHive_Convergence

Futur du SQL sur Hadoop :

  • SQL 20XX
    • Supporter les fonctionnalités analytics
    • WINDOWS, ROOLUP, CUBE
  • Transaction
  • Hive LLAP
  • Materialized views

Foudhil BABA ALI & David TANG