Apache Hive

Apache Hive est une infrastructure d’entrepôt de données 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[3]. Bien que initialement développée par Facebook, Apache Hive est maintenant utilisée et développée par d'autres sociétés comme Netflix[4],[5]. Amazon maintient un fork d'Apache Hive qui inclut Amazon Elastic MapReduce dans Amazon Web Services[6].

Apache Hive

Informations
Développé par Contributeurs
Première version [1]
Dernière version 3.1.3 ()[2]
Dépôt git://git.apache.org/hive.git et svn.apache.org/repos/asf/hive
État du projet Actif
Écrit en Java
Système d'exploitation Multiplateforme
Environnement Machine virtuelle Java
Type Système de gestion de base de données relationnelle (en)
Licence Licence Apache version 2.0
Site web hive.apache.org

Fonctionnalité

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. Il fournit un langage similaire à SQL appelée HiveQL[7] avec le schéma lors de la lecture et de manière transparente convertit les requêtes en map/reduce, Apache Tez[8] et jobs Spark. Tous les trois moteurs d'exécution peuvent fonctionner sur Hadoop YARN. Pour accélérer les requêtes, il fournit des index, y compris bitmap indexes[9].

Par défaut, Hive stocke les métadonnées dans une base de données embarquée Apache Derby, et d'autres bases de données client / serveur comme MySQL peuvent éventuellement être utilisées[10].

Actuellement, il y a quatre formats de fichiers pris en charge par Hive: TEXTFILE[11], SEQUENCEFILE, ORC[12] et RCFile[13],[14],[15]. Les fichiers Apache Parquet peuvent être lus via plugin dans les versions ultérieures à 0.10 et nativement à partir de 0.13[16],[17].

Autres caractéristiques de Hive :

  • Indexation pour fournir une accélération, type d'index dont le compactage et l'indice de Bitmap que de 0,10, plusieurs types d'index sont prévus ;
  • types de stockage différents tels que texte brut, RCFile, HBase, ORC et d'autres ;
  • stockage des métadonnées d'un SGBD relationnel, réduisant considérablement le temps d'effectuer certaines vérifications durant l'exécution de la requête ;
  • fonctionnement sur des données compressées stockées dans l'écosystème de Hadoop à l'aide d'algorithmes tels que DEFLATE, BWT, snappy, etc ;
  • fonctions intégrées définies par l'utilisateur (UDF) pour manipuler des dates, chaînes et autres outils d'exploration de données. Hive supporte l'extension d'UDF pour traiter des cas d'utilisation non soutenus par des fonctions intégrées ;
  • requêtes de type SQL (HiveQL) qui sont implicitement converties en séquence d'instructions MapReduce ou Tez, ou des jobs Spark.

Architecture

Hive est composé des éléments suivants :

  • metastore : est chargé du stockage des métadonnées pour chaque table c'est-à-dire qu'il enregistre par exemple les schémas ainsi que les localisations. Il inclut aussi 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. Il lance l'exécution des instructions par l'intermédiaire de la création de sessions et il contrôle la progression de l'exécution ainsi que le cycle de vie des processus. Il conserve les métadonnées nécessaires générées durant l'exécution des requêtes HiveQL. Le driver joue aussi le rôle de collecteur de données résultant des étapes Reduce ;
  • 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 de 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.

HiveQL

Bien que basé sur SQL, HiveQL ne suit pas à la lettre la norme SQL. HiveQL fournit des extensions hors SQL, par exemple des insertions multi-tables, et seulement une offre basique pour l'indexation. Aussi, HiveQL manque de support pour les transactions et les vues matérialisées, et seul soutien de sous-requête limitée[18],[19]. Le support pour insert, update et delete avec la fonctionnalité complète d'ACID a été mis à disposition avec la sortie de la version 0.14[20].

En interne, le compilateur traduit les instructions HiveQL en graphe orienté acyclique de MapReduce ou Tez, ou job Spark, qui sont ensuite soumis à Hadoop pour exécution[21].

Notes et références

(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Apache Hive » (voir la liste des auteurs).

Annexes

Voir aussi

Liens externes

  • Portail d’Internet
  • Portail des données
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.