Vous êtes sur la page 1sur 18

Big Data / Business Intelligence

« Pilotage de la performance pour une bonne gouvernance des entreprises »

CHAPITRE 5 :
Hive

2BA
Ecosystème Hadoop

2
Hadoop Framework Tools

3
Apache Hive

4
Hive, c’est quoi ?
• Apache Hive est une infrastructure d’entrepôt de donnée intégrée sur Hadoop permettant

l'analyse, le requêtage via un langage proche syntaxiquement de SQL ainsi que la synthèse

de données.

• Initialement développée par Facebook, Apache Hive est maintenant utilisé et développé par

d'autres sociétés comme Netflix, Amazon, …

• Apache Hive prend en charge l'analyse des grands ensembles de données stockées dans

Hadoop HDFS ou des systèmes de fichiers compatibles tels que Amazon S3.

5
Hive, c’est quoi ?
• Hive fournit un langage similaire à SQL appelée HiveQL avec le schéma lors de la lecture et de
manière transparente convertit les requêtes en map/reduce, Apache Tez et jobs Spark.
• Les trois moteurs d'exécution peuvent fonctionner sur Hadoop YARN.
• Pour accélérer les requêtes, Hive fournit des indexes.
• Par défaut, Hive stocke les métadonnées dans une base de données embarquée Apache Derby,
• D'autres bases de données client/serveur comme MySQL peuvent éventuellement être utilisées.
• Hive prend en charge :
• Les fichiers au format texte : appelés également fichiers plats,
• Les fichiers SequenceFiles : fichiers plats constitués de paires clé/valeur binaires,
• RCFiles - Record Columnar Files : stockent des colonnes dans une table selon le mode d'une
base de données en colonnes.
6
Architecture de Hive

7
Architecture de Hive
• metastore :
• Chargé du stockage des métadonnées pour chaque table (par exemple les schémas ainsi que
les localisations).
• Inclut des métadonnées de partitionnement afin d'aider le driver à suivre la distribution des
bases de données au sein du cluster.
• En pratique, les données sont stockées à la manière d'un SGBD relationnel traditionnel.
• driver :
• Joue le rôle du contrôleur de processus recevant les instances HiveQL.
• Lance l'exécution des instructions par l'intermédiaire de la création de sessions et contrôle la
progression de l'exécution ainsi que le cycle de vie des processus.
• Conserve les métadonnées nécessaires générées durant l'exécution des requêtes HiveQL.
• Joue aussi le rôle de collecteur de données résultant des étapes Reduce.
8
Architecture de Hive

• compiler :

• Réalise la compilation des requêtes HiveQL.

• optimizer :

• Réalise différentes transformations sur le plan d'exécution pour obtenir un DAG optimisé.

• executor :

• Après les phases de compilation et d'optimisation, il exécute les tâches fournies par le DAG.

• cLI, UI et Thrift Server :

• Permettent à un utilisateur externe d’interagir avec Hive en soumettant des requêtes.


9
Cycle de vie d’une requête
• Parser :
• Transforme la requête en arbre (DAG),
• Semantic Analyzer :
• Transforme l’arbre en une représentation interne de la requête par bloc,
• Logical Plan Generator :
• Convertit la représentation interne en un plan logique (arbre d’opérations logiques),
• Optimizer :
• Parcourt plusieurs fois le plan logique d’opérations pour le rendre plus performant,
• Physical Plan Generator :
• Convertit le plan logique en un plan physique de DAG de job MapReduce

10
HiveQL

• HiveQL est le langage SQL pour Hive,

• HiveQL supporte :

• Data Definition Language DDL (CREATE, ALTER, DROP),

• Data Manipulation Language DML (LOAD, INSERT, SELECT),

• Fonctions utilisateurs,

• Appel à des programmes externes MapReduce.

11
Définition d’un schéma
• Le schéma d’une table est appelé métadonnées.
• Les métadonnées sont stockées dans une base de données MySQL : metastore.

12
Types HiveQL
• Hive définit les types suivants :
• BIGINT (8 octets), INT (4), SMALLINT (2), BYTE (1 octet)
• FLOAT et DOUBLE
• BOOLEAN valant TRUE ou FALSE
• STRING, on peut spécifier le codage (UTF8 ou autre)
• TIMESTAMP exprimé en nombre de secondes.nanosecondes depuis le 01/01/1970 UTC
• données structurées comme avec Pig :
• ARRAY<type> indique qu’il y a une liste de type
• STRUCT<nom1:type1, nom2:type2...> pour une structure regroupant plusieurs
valeurs
• MAP<typecle, typeval> pour une suite de paires clé,valeur
13
Séparations des champs pour lecture
• La création d’une table se fait ainsi :

• Les directives situées après le schéma indiquent la manière dont les données sont stockées dans
le fichier CSV. Ce sont :
• FIELDS TERMINATED BY ';' : il y a un « ; » pour séparer les champs
• COLLECTION ITEMS TERMINATED BY ',' : il y a un « , » entre les éléments d’un ARRAY
• MAP KEYS TERMINATED BY ':' : il y a un « : » entre les clés et les valeurs d’un MAP
• LINES TERMINATED BY '\n' : il y a un « \n » en fin de ligne
• STORED AS TEXTFILE : c’est un CSV.

14
Chargement des données
• Pour charger un fichier CSV qui se trouve sur HDFS dans la table :

• Hive déplace le fichier CSV dans ses propres dossiers, afin de ne pas dupliquer les données.
• On peut écrire CREATE EXTERNAL TABLE ... pour empêcher Hive de capturer le fichier.
• On peut aussi charger un fichier local :

15
Hive & HBase
• Il est possible d’employer une table HBase.
• Cela fait appel à la notion de gestionnaire de stockage (Storage Handler). C’est simplement
une classe générale qui gère la lecture des données. Elle a des sous-classes pour différents
systèmes, dont HBaseStorageHandler pour HBase.

• La clause SERDEPROPERTIES (serialisation/désérialisation) associe les noms des colonnes


HBase à ceux de la table Hive.

16
Requêtes HiveQL
• Les requêtes HiveQL sont principalement des SELECT.

• Toutes les clauses SQL classiques sont disponibles : FROM, JOIN, WHERE, GROUP BY,

HAVING, ORDER BY, LIMIT.

• Il y en a d’autres pour optimiser le travail MapReduce sous-jacent, par exemple pour faire le

classement sur une colonne, il faut écrire :

17
Requêtes HiveQL
• Il est possible d’exporter des résultats dans un dossier :

• Parmi les autres commandes, il y a :


• SHOW TABLES; pour afficher la liste des tables (dans le metastore).
• DESCRIBE EXTENDED table; affiche le schéma de la table

18

Vous aimerez peut-être aussi