Apache Hive
Développé par | Contributeurs |
---|---|
Première version | [1] |
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 2.0 |
Site web | hive.apache.org |
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[2]. 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[3],[4]. Amazon maintient un fork d'Apache Hive qui inclut Amazon Elastic MapReduce dans Amazon Web Services[5].
Fonctionnalité
[modifier | modifier le code]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[6] avec le schéma lors de la lecture et de manière transparente convertit les requêtes en map/reduce, Apache Tez[7] 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[8].
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[9].
Actuellement, il y a quatre formats de fichiers pris en charge par Hive: TEXTFILE[10], SEQUENCEFILE, ORC[11] et RCFile[12],[13],[14]. Les fichiers Apache Parquet peuvent être lus via des plugins dans les versions ultérieures à 0.10 et nativement à partir de 0.13[15],[16].
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
[modifier | modifier le code]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
[modifier | modifier le code]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[17],[18]. 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[19].
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[20].
Notes et références
[modifier | modifier le code]- « https://projects.apache.org/json/projects/hive.json » (consulté le )
- Venner, Jason (2009).
- Use Case Study of Hive/Hadoop.
- OSCON Data 2011, Adrian Cockcroft, "Data Flow at Netflix" on YouTube.
- Amazon Elastic MapReduce Developer Guide.
- HiveQL Language Manual.
- Apache Tez.
- Working with Students to Improve Indexing in Apache Hive.
- Lam, Chuck (2010).
- Optimising Hadoop and Big Data with Text and HiveOptimising Hadoop and Big Data with Text and Hive.
- LanguageManual ORC.
- Faster Big Data on Hadoop with Hive and RCFile.
- Facebook's Petabyte Scale Data Warehouse using Hive and Hadoop.
- Yongqiang He, Rubao Lee, Yin Huai, Zheng Shao, Namit Jain, Xiaodong Zhang and Zhiwei Xu. "RCFile: A Fast and Space-efficient Data Placement Structure in MapReduce-based Warehouse Systems" (PDF).
- "Parquet". 18 Dec 2014.
- Massie, Matt (21 August 2013).
- White, Tom (2010).
- Hive Language Manual.
- ACID and Transactions in Hive.
- Hive A Warehousing Solution Over a MapReduce Framework.
Annexes
[modifier | modifier le code]Voir aussi
[modifier | modifier le code]Liens externes
[modifier | modifier le code]- Site officiel
- The Free Hive Book (CC by-nc licensed)
- Hive A Warehousing Solution Over a MapReduce Framework - Original paper presented by Facebook at VLDB 2009
- Using Apache Hive With Amazon Elastic MapReduce (Part 1) and Part 2 on YouTube, presented by an AWS Engineer
- Using hive + cassandra + shark. A hive cassandra cql storage handler.
- Major Technical Advancements in Apache Hive, Yin Huai, Ashutosh Chauhan, Alan Gates, Gunther Hagleitner, Eric N. Hanson, Owen O’Malley, Jitendra Pandey, Yuan Yuan, Rubao Lee and Xiaodong Zhang, SIGMOD 2014
- Apache Hive Wiki