De nombreux experts en logiciels prédisent depuis longtemps la dis­pa­ri­tion du système d’entrepôt des données Apache Hive, mais aujourd’hui, celui-ci est encore utilisé pour gérer d’im­por­tants volumes de données. De la même manière, nom­breuses sont les fonctions d’Apache Hive à avoir été intégrées aux systèmes suivants. Il peut donc s’avérer bénéfique de s’in­té­res­ser plus at­ten­ti­ve­ment sur Hive et ses prin­ci­pales ap­pli­ca­tions.

Qu’est-ce qu’Apache Hive ?

Apache Hive est une extension évolutive de l’ap­pli­ca­tion serveur Apache et du framework de stockage Apache Hadoop. Dans les ar­chi­tec­tures Hadoop, les calculs complexes sont divisés en petits processus, puis répartis en parallèle sur des clusters in­for­ma­tiques composés de nœuds en utilisant le clus­te­ring. D’im­por­tants volumes de données peuvent donc être traités, même depuis des ar­chi­tec­tures standard de serveurs et d’or­di­na­teurs. Ici, Apache Hive agit comme un système intégré d’in­ter­ro­ga­tion et d’analyse fondé sur l’open source pour votre entrepôt de données. Hive permet d’in­ter­ro­ger, d’analyser et d’agréger les données par l’in­ter­mé­diaire du langage de base de données HiveQL, similaire à SQL. Grâce à Hive, de grands groupes d’uti­li­sa­teurs peuvent également accéder aux données Hadoop.

Hive utilise une syntaxe com­pa­rable à SQL:1999 pour struc­tu­rer des pro­grammes, des ap­pli­ca­tions et des bases de données ou encore pour intégrer des scripts. Avant Hive, il fallait s’y connaître en pro­gram­ma­tion et pro­cé­dures de pro­gram­ma­tion Java pour in­ter­ro­ger les données avec Hadoop. Hive permet de trans­po­ser fa­ci­le­ment les in­ter­ro­ga­tions dans le format du système de base de données. Il peut par exemple s’agir de tâches MapReduce. Avec Hive, il est aussi possible d’intégrer d’autres ap­pli­ca­tions fondées sur SQL au framework Hadoop. Comme SQL est très répandu, Hive, qui agit comme une extension de Hadoop, facilite aussi le travail des personnes non initiées avec les bases de données et les volumes de données im­por­tants.

Comment fonc­tionne Hive ?

Avant qu’Apache Hive ne vienne compléter le framework Hadoop, l’éco­sys­tème de ce dernier se fondait sur le framework MapReduce développé par Google. Pour Hadoop 1, il était encore im­plé­menté di­rec­te­ment dans le framework en qualité de moteur autonome dédié à la gestion, la sur­veil­lance et le contrôle des res­sources et des processus de calcul. Pour in­ter­ro­ger les fichiers Hadoop, il était donc né­ces­saire de bien connaître Java.

Vous trouverez ci-dessous les prin­ci­pales fonctions d’Hadoop en lien avec l’uti­li­sa­tion et la gestion d’im­por­tants volumes de données :

  • l’agré­ga­tion des données
  • l’in­ter­ro­ga­tion
  • l’analyse

Le principe de fonc­tion­ne­ment de Hive est simple : grâce à son interface similaire à celle de SQL, les requêtes et les analyses de fichiers Hadoop sont fa­ci­le­ment trans­po­sées en tâches MapReduce, Spark ou Tez par HiveQL. Hive organise les données du framework Hadoop dans un format de table com­pa­tible avec HDFS. HDFS est l’acronyme d’« Hadoop Dis­tri­bu­ted File System » (« système de fichiers dis­tri­bués »). Il interroge les données de manière ciblée en passant par des clusters et des nœuds spé­ci­fiques au système Hadoop. Des fonctions standard sous forme de filtres, d’agré­ga­tions et de jointures sont également dis­po­nibles.

Hive et le principe « Schema-on-read » (schéma à la lecture)

Con­trai­re­ment aux bases de données re­la­tion­nelles qui fonc­tion­nent selon le principe SoW (Schema-on-write, lit­té­ra­le­ment « schéma à l’écriture »), Hive se fonde sur le principe SoR (Schema-on-read, lit­té­ra­le­ment « schéma à la lecture ») : les données sont d’abord stockées telles quelles dans le framework Hadoop. Elles ne sont pas en­re­gis­trées dans un schéma prédéfini. Au moment d’une requête Hive, les données sont alors adaptées dans un schéma répondant à vos besoins. Son principal avantage réside dans le Cloud computing, car celui-ci offre davantage d’évo­lu­ti­vité et de flexi­bi­lité, ainsi que des temps de char­ge­ment plus rapides pour les bases de données dis­tri­buées sur dif­fé­rents clusters.

Comment tra­vail­ler avec des données dans Hive ?

Pour in­ter­ro­ger et analyser des données avec Hive, il convient d’utiliser des tables Apache Hive en suivant un schéma d’accès en lecture. Avec Hive, vous pouvez organiser et trier les données de ces tables sous forme de petites unités dé­tail­lées ou de grandes unités globales. Ces tables Hive sont divisées en « buckets » (lit­té­ra­le­ment « com­par­ti­ments »), qui sont en réalité des blocs de données. Vous pouvez utiliser le langage de base de données HiveQL, semblable à SQL, pour accéder aux données qui vous in­té­res­sent. Il est possible, entre autres actions, de réécrire les tables Hive, de les joindre (ou de les annexer) et de les sé­ria­li­ser dans des bases de données. Chaque table Hive dispose en outre de son propre ré­per­toire HDFS.

Conseil

Pour garder le contrôle sur votre base de données, optez pour l’offre d’hé­ber­ge­ment Linux proposée par IONOS et profitez d’un cer­ti­fi­cat SSL et d’une pro­tec­tion DDoS, ainsi que de serveurs sécurisés basés en Allemagne.

Hive : prin­ci­pales fonctions

La recherche et l’analyse d’im­por­tants volumes et ensembles de données stockés sous forme de fichiers Hadoop dans un framework Hadoop, figurent parmi les prin­ci­pales fonctions de Hive. Hive prend également en charge la trans­po­si­tion de requêtes HiveQL en tâches MapReduce, Sparks et Tez.

Les éléments listés ci-dessous comptent également parmi les fonctions notables de Hive :

  • Stockage de mé­ta­don­nées dans des systèmes de gestion de bases de données re­la­tion­nelles
  • Uti­li­sa­tion de données com­pres­sées dans des systèmes Hadoop
  • Recours à des UDF (User Defined Functions, lit­té­ra­le­ment « fonctions définies par l’uti­li­sa­teur ») pour un trai­te­ment et une ex­plo­ra­tion per­son­na­li­sés des données
  • Prise en charge de dif­fé­rents types de stockage tels que RCFile, Text ou HBase
  • Uti­li­sa­tion de MapReduce et prise en charge des processus ETL

Qu’est-ce qu’HiveQL ?

Hive est souvent décrit comme étant « similaire à SQL ». Cela est dû au langage de base de données HiveQL ; s’il se fonde sur SQL, il n’est pas en­tiè­re­ment conforme aux normes telles que SQL-92. D’une certaine manière, HiveQL peut donc aussi être considéré comme un « dialecte » SQL ou MySQL. S’ils se res­semblent beaucoup, plusieurs aspects es­sen­tiels per­met­tent d’établir une dis­tinc­tion entre ces deux langages. Ainsi, nombre de fonctions SQL ne sont pas prises en charge par HiveQL, notamment en ce qui concerne les tran­sac­tions ; la prise en charge des sous-requêtes par ce dernier est également limitée, alors qu’il offre une meilleure évo­lu­ti­vité et davantage de per­for­mances dans le framework Hadoop grâce à ses ex­ten­sions, comme les « Mul­ti­table Inserts » (lit­té­ra­le­ment « in­ser­tions mul­ti­tables »). Le com­pi­la­teur Apache Hive permet de trans­po­ser des requêtes HiveQL dans MapReduce, Tez et Spark.

Conseil

Utilisez des serveurs dédiés équipés de puissants pro­ces­seurs Intel ou AMD et louez un serveur Managed chez IONOS si vous ne souhaitez pas investir dans un service in­for­ma­tique.

Apache Hive : pro­tec­tion des données

En intégrant Apache Hive à des systèmes Hadoop, vous pouvez également profiter du service d’au­then­ti­fi­ca­tion Kerberos. Vous pouvez ainsi procéder en toute fiabilité à une au­then­ti­fi­ca­tion mutuelle et fiable et à une vé­ri­fi­ca­tion entre le serveur et les uti­li­sa­teurs. En outre, comme le système HDFS définit des au­to­ri­sa­tions pour les nouveaux fichiers Hive, vous êtes res­pon­sables des au­to­ri­sa­tions en lien avec les uti­li­sa­teurs et les groupes. En matière de sécurité, un autre aspect essentiel concerne la res­tau­ra­tion par Hive des charges de travail critiques en cas d’urgence.

Quels sont les avantages d’Apache Hive ?

Hive propose un grand nombre de fonctions utiles, notamment si vous souhaitez tra­vail­ler avec d’im­por­tants volumes de données dans le cadre du Cloud computing ou du système Big Data as a Service (BDaaS, lit­té­ra­le­ment « big data en tant que service ») :

  • Des requêtes ad hoc
  • L’analyse de données
  • La création de tables et de par­ti­tions
  • La prise en charge des liens logiques, re­la­tion­nels et arith­mé­tiques
  • La sur­veil­lance et vé­ri­fi­ca­tion des tran­sac­tions
  • Les rapports en fin de journée
  • Le char­ge­ment des résultats des requêtes dans des ré­per­toires HDFS
  • Le transfert des données de tables dans des ré­per­toires locaux

Les prin­ci­paux avantages de Hive sont donc les suivants :

  • Il permet d’obtenir des in­for­ma­tions qua­li­ta­tives sur d’im­por­tants volumes de données, par exemple en ce qui concerne l’ex­plo­ra­tion de données et l’ap­pren­tis­sage au­to­ma­tique
  • Il permet d’optimiser l’évo­lu­ti­vité, la ren­ta­bi­lité et l’ex­ten­si­bi­lité des grands fra­me­works Hadoop
  • Il permet de segmenter des cercles d’uti­li­sa­teurs en analysant les flux de clics
  • Il ne nécessite aucune con­nais­sance ap­pro­fon­die sur les pro­cé­dures de pro­gram­ma­tion Java, et ce, grâce à HiveQL
  • Il présente un avantage con­cur­ren­tiel en fa­vo­ri­sant la réac­ti­vité et des per­for­mances plus rapides et évo­lu­tives
  • Il permet de stocker des volumes de données pouvant atteindre des centaines de pé­taoc­tets, et jusqu’à 100 000 requêtes de données par heure, même en l’absence d’une in­fras­truc­ture haut de gamme
  • Il permet de garantir une meilleure uti­li­sa­tion des res­sources, et donc des temps de calcul et de char­ge­ment plus rapides en fonction des charges de travail grâce à sa capacité de vir­tua­li­sa­tion
  • Il permet d’assurer une pro­tec­tion des données sa­tis­fai­sante et qui résiste aux pannes grâce à de meil­leures options de res­tau­ra­tion d’urgence et au service d’au­then­ti­fi­ca­tion de Kerberos
  • Il permet d’accélérer l’insertion de données en vous évitant d’avoir à trans­po­ser les données dans les formats de base des données internes (Hive peut lire et analyser les données, même en l’absence de mo­di­fi­ca­tion manuelle du format)
  • Il fonc­tionne selon un principe open source

Quels sont les in­con­vé­nients d’Apache Hive ?

Le principal in­con­vé­nient d’Apache Hive est en rapport avec les nombreux systèmes dé­ve­lop­pés par la suite et dont les per­for­mances sont sem­blables, voire meil­leures. Les spé­cia­listes con­si­dè­rent que Hive est de moins en moins pertinent pour la gestion et l’uti­li­sa­tion des bases de données.

Vous trouverez ci-dessous d’autres in­con­vé­nients associés à Hive :

  • Aucun accès aux données en temps réel
  • Un trai­te­ment et une mise à jour complexes des ensembles de données par l’in­ter­mé­diaire du framework Hadoop avec MapReduce
  • Une forte latence qui le rend aujourd’hui plus lent que ses con­cur­rents

Pré­sen­ta­tion rapide de l’ar­chi­tec­ture Hive

Les com­po­sants ci-dessous comptent parmi les plus im­por­tants de l’ar­chi­tec­ture Hive :

  • Metastore : il s’agit de l’em­pla­ce­ment de stockage central de Hive. Il renferme, au format SGBDR (système de gestion de base de données re­la­tion­nelle), toutes les données et in­for­ma­tions per­ti­nentes sur, par exemple, les dé­fi­ni­tions des tables, les schémas et l’em­pla­ce­ment des ré­per­toires, ainsi que les mé­ta­don­nées des par­ti­tions
  • Pilote : il reçoit les commandes envoyées par HiveQL et les traite en utilisant les com­po­sants Compiler (« com­pi­la­teur », pour collecter les in­for­ma­tions), Optimizer (« op­ti­mi­seur », pour dé­ter­mi­ner la meilleure méthode d’exécution) et Executor (« exécuteur », pour mettre en œuvre la tâche)
  • Ligne de commande et interface uti­li­sa­teur : il s’agit de l’interface pour les uti­li­sa­teurs externes
  • Serveur Thrift : il permet aux clients externes de com­mu­ni­quer avec Hive et aux pro­to­coles de type JDBC (Java DataBase Con­nec­ti­vity) et ODBC (Open Database Con­nec­ti­vity) d’interagir et d’échanger par l’in­ter­mé­diaire du réseau
Image: Schéma de l’architecture Hive
Hive offre de nombreux avantages à votre en­tre­prise en ce qui concerne le trai­te­ment et l’in­ter­ro­ga­tion d’im­por­tants volumes de données.

Quelle est l’histoire de la création d’Apache Hive ?

Apache Hive avait pour objectif d’aider les uti­li­sa­teurs con­nais­sant peu SQL à tra­vail­ler avec des volumes de données pouvant atteindre plusieurs pé­taoc­tets. Hive a été développé en 2007 par ses fon­da­teurs, Joydeep Sen Sharma et Ashish Thusoo, alors que ceux-ci tra­vail­laient chez Facebook sur le framework Hadoop du réseau social, l’un des plus im­por­tants du monde (avec plusieurs centaines de pé­taoc­tets). En 2008, Facebook a décidé de mettre le projet Hive entre les mains de la com­mu­nauté open source. La version 1.0 a été mise à la dis­po­si­tion du public en février 2015.

Aller au menu principal