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].
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
- « https://projects.apache.org/json/projects/hive.json » (consulté le )
- « Apache Hive 3.1.3 Released », (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-efïŹcient 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
Liens externes
- 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