Vous êtes sur la page 1sur 12

Cours Big Data – Chapitre III Niveau : 3ème année

Apache Hive
 Initialement créé par facebook.

 Actuellement utilisé et développé par Netflix, Amazon,…

 Il fournit un langage de haut niveau semblable à SQL (SQL-


like), appelé HQL permettant d’interagir avec un cluster
hadoop, dans le but de réaliser des analyses sur une masse
importante de données en utilisant la logique MapReduce.

61

61

Apache Hive

 Contrairement à Hadoop, Hive permet d’effectuer des


requêtes proches de SQL sans avoir besoin d’écrire en Java.

 Ces requêtes peuvent être exécutées via Apache Tez, Apache


Spark, ou MapReduce (trois moteurs d’exécution pouvant être
lancés sur Hadoop YARN).

62

62

Enseignante : R. CHEBIL 1
Cours Big Data – Chapitre III Niveau : 3ème année

Apache Hive
Hive n’est ni une base de données ni un datawarehouse !

Il s’agit d’un système qui maintient des métadonnées décrivant


les données stockées sur HDFS.

Il utilise une base de données relationnelle


appelée metastore (Apache Derby par défaut) pour assurer
la persistance des métadonnées.

63

63

HiveQL
Le langage de requête HiveQL supporte :
 Les opérations telles que :
◦ Sélection,
◦ Jointure,
◦ Agrégation
◦ …

 Le langage de définition de données (DDL) permettant la


création de tables, partitions, buckets.
 A travers le langage de manipulation de données (DML), le
chargement des données dans les tables gérées par Hive. Cette
manipulation se fait par les commandes load et insert.

64

Enseignante : R. CHEBIL 2
Cours Big Data – Chapitre III Niveau : 3ème année

HiveQL
Comment interagir avec Hive ?
1. Soit directement en commande shell sous hive :
Sous hadoop, on tape la commande hive :
$ hive
hive>
Puis on écrit les requêtes select, alter, drop, ..
2. Ou bien, on enregistre les requêtes dans un fichier .hql et on
l’éxécute directement sous hadoop, avec la comande :
hive –f nom_du_fichier.hql

65

Architecture Hive

Plusieurs illustrations possibles pour représenter les mêmes


composants et interactions ….

66

66

Enseignante : R. CHEBIL 3
Cours Big Data – Chapitre III Niveau : 3ème année

Architecture Hive

Cours en ligne « Comprendre Hive » de Rudi Bruchez 67

67

Architecture Hive

https://meritis.fr/big-data-analyse-donnees-apache-hive/ 68

68

Enseignante : R. CHEBIL 4
Cours Big Data – Chapitre III Niveau : 3ème année

Fonctionnement Hive
Pour exécuter une requête Hive, l’interaction Hive/Hadoop
s’effectue selon les trois étapes suivantes :
1. Envoi de la requête HiveQL au serveur Hive ;

2. Planification de la requête comme un job par le driver


(pilote) après compilation, optimisation ;

3. Exécution du job.

69

69

Fonctionnement Hive
1. Envoi de la requête HiveQL au serveur Hive :
Il est possible de soumettre des requêtes au serveur Hive de
différentes manières en utilisant :
o Le client Hive CLI (Hive Commande Line Interface) : qui
permet d’entrer des commandes directement depuis le shell hive
ou d’exécuter un ensemble de commandes Hive écrites dans un
fichier texte. Ce client n’est pas compatible avec la nouvelle
version de Hive (HiveServer2) et a été remplacé par Beeline qui
est le nouveau client en mode ligne de commande de Hive. Il
communique avec HiveServer2 via thrift.
o Le client JDBC/ODBC,
o Le client web.

70

70

Enseignante : R. CHEBIL 5
Cours Big Data – Chapitre III Niveau : 3ème année

Fonctionnement Hive
2. Planification de la requête
Le serveur de Hive est couramment appelé pilote (ou driver).
Il se compose du metastore, du compilateur et
de l’exécuteur. Il s’agit du conteneur du moteur
d’exécution de Hive.
HiveServer2 est le nouveau serveur Hive qui succède
HiveServer.
HiveServer2 assure deux nouvelles fonctionnalités : la gestion
de l’authentification client et la gestion des requêtes
concurrentes.
La nouvelle interface RPC de HiveServer2 implémente un
service thrift pour communiquer avec les clients et exécuter
leurs requêtes.

71

71

Fonctionnement Hive
3. Exécution du job
Correspond à l’exécution du job sur le cluster Hadoop.

72

72

Enseignante : R. CHEBIL 6
Cours Big Data – Chapitre III Niveau : 3ème année

Tables Hive
Une table Hive est constituée de :

 Schéma des données stockées dans le metastore ;

 Les données stockées généralement sur HDFS, mais


pouvant également l’être dans des systèmes de fichiers
compatibles tels que S3 Amazon File System.

Grâce au metastore, Hive permet de manipuler les données


comme si elles étaient persistées dans des tables et de les
interroger avec son langage HiveQL.
73

73

Tables Hive
Chaque table Hive est matérialisée dans HDFS par un
répertoire. Les données d’une table sont sérialisées et stockées
dans des fichiers de ce répertoire.

Il est possible de créer des tables externes. Dans ce cas là, les
données seront stockées en dehors du répertoire de l’entrepôt
de données et Hive fera référence à ces derniers.

74

74

Enseignante : R. CHEBIL 7
Cours Big Data – Chapitre III Niveau : 3ème année

Partition
Chaque table peut avoir une ou plusieurs partitions qui
déterminent la distribution des données dans des sous-
répertoires du répertoire de la table.
Partitionner une table dans Hive implique une séparation des
fichiers selon la colonne (ou les colonnes) définissant la clé
de partition.
Le partitionnement peut améliorer les performances des
requêtes HiveQL puisque les fichiers dans HDFS sont déjà
séparés en se basant sur la valeur de la colonne : cette
séparation peut réduire le nombre de mappers et réduire
ainsi le nombre des opérations de shuffle/sort du job
résultant.
75

75

Partition
La définition d’une partition est similaire à sa définition en
SQL :
CREATE TABLE product_partitioned
(
productId INT,
productName STRING,
valuationDate TIMESTAMP,
validTillDate TIMESTAMP)
partitioned by (productType
STRING) ;
Commande HiveQL pour la création d’une table product partitionnée par le champ
productType
Dans HDFS, nous aurons une structure de données en sous-répertoire par
productType

76

76

Enseignante : R. CHEBIL 8
Cours Big Data – Chapitre III Niveau : 3ème année

Partition

L’utilisation de cette technique permet un accès plus rapide aux


données (requête sur une ou des tranches de données).

77

77

Bucket
S'il existe un énorme ensemble de données, même après le
partitionnement sur une ou plusieurs colonnes, la taille des
partitions demeure énorme.
=> Nous avons donc besoin de diviser une partition en
différentes parties.
Pour surmonter ce genre de problèmes, Hive fournit le
concept de bucketing (ou clustering), qui permet à
l'utilisateur de diviser les ensembles de données de table en
parties plus faciles à gérer et moins volumineuses.
CREATE TABLE bucketed_users (id INT, name STRING)
CLUSTERED BY (id) INTO 4 BUCKETS;

78

78

Enseignante : R. CHEBIL 9
Cours Big Data – Chapitre III Niveau : 3ème année

Bucket
Le bucketing est une technique très intéressante, elle permet de
clusteriser les données dans un nombre de fichiers et de trier
physiquement les données en fonction d’une ou plusieurs clés.

C’est un levier de performance notamment pour les indicateurs


de type distinct count sur la clé de bucketing.

Chaque insertion (transaction) insère un groupe de nouveaux


fichiers, répartis dans les répertoires en fonction du
partitionnement et répartis en fonction du nombre de buckets
définis au niveau de la table.
79

79

Bucket
Chaque partition sera créée en tant que sous-répertoire, mais
chaque bucket sera créé en tant que fichier.

Le bucketing peut également être effectué même sans


partitionnement sur les tables Hive.

80

80

Enseignante : R. CHEBIL 10
Cours Big Data – Chapitre III Niveau : 3ème année

Types de données
Types primitifs : int, float , double, string, …

Types complexes
◦ Array
◦ Map
◦ Struct

81

Conclusion
Pig est un "langage de script" :
 Il excelle dans la spécification d'un pipeline de traitement
automatiquement parallélisé dans les opérations Map-Reduce.
 Adapté à la manipulation générale et le nettoyage des
données.
 Adapté aux données non structurées, dont la structure change
rapidement (appelées également “Moving Data”).
 Il est très proche du monde de l’ETL
(Extract Transform Load) où des données non structurées
sont reformatées et leur structure est définie a posteriori.
82

82

Enseignante : R. CHEBIL 11
Cours Big Data – Chapitre III Niveau : 3ème année

Conclusion
Hive offre un langage SQL-Like :
 Il permet de définir une structure sur une variété de formats
de données facilitant ainsi la possibilité de les requêter.
 Il est donc bien adapté à un contexte d’analyse de données.
 Il propose une fonction de stockage distribué et permet
d’accéder à des fichiers stockés dans HDFS (ou dans d’autres
systèmes comme Apache HBase).

83

83

Enseignante : R. CHEBIL 12

Vous aimerez peut-être aussi