Qu'est-ce que Hive? Archiconfiguration et modes
โก Rรฉsumรฉ intelligent
Hive est la couche SQL de l'รฉcosystรจme Hadoop, transformant les instructions HiveQL en tรขches distribuรฉes qui lisent des donnรฉes structurรฉes dรฉjร stockรฉes sur HDFS, permettant ainsi aux analystes d'interroger des tables de plusieurs pรฉtaoctets sans avoir ร รฉcrire eux-mรชmes de code MapReduce.

Qu'est-ce que Hive?
Hive est un outil ETL et d'entreposage de donnรฉes dรฉveloppรฉ sur le systรจme de fichiers distribuรฉ Hadoop (HDFS). Hive simplifie les opรฉrations telles que :
- Encapsulation de donnรฉes
- Requรชtes ad hoc
- Analyse d'รฉnormes ensembles de donnรฉes
Caractรฉristiques importantes de Hive
Les points ci-dessous expliquent ce qui distingue Hive d'un programme MapReduce classique.
- Dans Hive, les tables et les bases de donnรฉes sont d'abord crรฉรฉes, puis les donnรฉes sont chargรฉes dans ces tables.
- Hive est un entrepรดt de donnรฉes conรงu pour gรฉrer et interroger uniquement des donnรฉes structurรฉes stockรฉes dans des tables.
- Lors du traitement de donnรฉes structurรฉes, MapReduce ne propose pas de fonctionnalitรฉs d'optimisation et d'ergonomie telles que les UDF, contrairement au framework Hive. L'optimisation des requรชtes dรฉsigne une mรฉthode efficace d'exรฉcution des requรชtes en termes de performances.
- Le langage de Hive, inspirรฉ du SQL, simplifie l'apprentissage en รฉvitant la complexitรฉ de la programmation MapReduce. Il rรฉutilise des concepts familiers du monde des bases de donnรฉes relationnelles, tels que les tables, les lignes, les colonnes et le schรฉma.
- La programmation d'Hadoop fonctionne sur des fichiers plats. Par consรฉquent, Hive peut utiliser des structures de rรฉpertoires pour "partition" des donnรฉes permettant d'amรฉliorer les performances sur certaines requรชtes.
- Un composant important de Hive est le mรฉtastore, utilisรฉ pour stocker les informations de schรฉma. Ce mรฉtastore rรฉside gรฉnรฉralement dans une base de donnรฉes relationnelle. Nous pouvons interagir avec Hive ร l'aide de mรฉthodes telles que
- Web GUI
- Java Interface de connectivitรฉ de base de donnรฉes (JDBC)
- La plupart des interactions se dรฉroulent via une interface de ligne de commande (CLI). Hive fournit une CLI pour รฉcrire des requรชtes Hive ร l'aide du langage de requรชte Hive (HQL).
- Gรฉnรฉralement, la syntaxe HQL est similaire ร la SQL Une syntaxe que la plupart des analystes de donnรฉes connaissent bien. L'exemple de requรชte ci-dessous affiche tous les enregistrements prรฉsents dans la table mentionnรฉe.
- Exemple de requรชte : Sรฉlectionnez * dans
- Hive prend en charge quatre formats de fichiers, ร savoir : TEXTFILE, SEQUENCEFILE, ORC et RCFILE (Enregistrer le fichier en colonnes).
- Pour le stockage des mรฉtadonnรฉes mono-utilisateur, Hive utilise la base de donnรฉes Derby, et pour les mรฉtadonnรฉes multi-utilisateurs ou partagรฉes, Hive utilise MySQL.
Pour la mise en place MySQL pour la base de donnรฉes et le stockage des mรฉtadonnรฉes, consultez le tutoriel sur configurer le mรฉtastore Hive avec MySQL, qui fait suite ร Guide d'installation de Hive.
Certains des points clรฉs de Hive :
- La principale diffรฉrence entre HQL et SQL est qu'une requรชte Hive s'exรฉcute sur l'infrastructure Hadoop plutรดt que sur une base de donnรฉes traditionnelle.
- L'exรฉcution des requรชtes Hive est une sรฉrie de requรชtes gรฉnรฉrรฉes automatiquement. MapReduce emplois.
- Hive prend en charge les concepts de partition et de compartiment pour faciliter la rรฉcupรฉration des donnรฉes lorsque le client exรฉcute la requรชte.
- Hive prend en charge les personnalisations UDF (fonctions dรฉfinies par l'utilisateur) Pour le nettoyage, le filtrage et les opรฉrations similaires sur les donnรฉes, il est possible de dรฉfinir des UDF Hive en fonction des besoins des programmeurs.
Hive vs bases de donnรฉes relationnelles
Hive accomplit des fonctions que les bases de donnรฉes relationnelles ne peuvent pas. Lorsque les volumes de donnรฉes atteignent des pรฉtaoctets, la rapiditรฉ d'exรฉcution est cruciale, et Hive y parvient efficacement. Les principales diffรฉrences sont les suivantes.
Les bases de donnรฉes relationnelles sont de ยซ schรฉma ร la lecture et schรฉma ร lโรฉcriture ยปOn crรฉe d'abord une table, puis on y insรจre des donnรฉes. Sur les tables de bases de donnรฉes relationnelles, il est possible d'effectuer des opรฉrations telles que l'insertion, la mise ร jour et la modification.
La ruche est ยซ schรฉma en lecture seule ยปAinsi, des fonctions comme la mise ร jour et la modification ne fonctionnaient pas dans les premiรจres versions, car une requรชte Hive dans un cluster typique s'exรฉcute sur plusieurs DataNodes, ce qui rendait impossible la mise ร jour et la modification des donnรฉes sur plusieurs nลuds (versions Hive infรฉrieures ร 0.13).
Hive prend รฉgalement en charge ยซ Lisez beaucoup, รฉcrivez une seule fois ยป Ce modรจle permet, dans les versions rรฉcentes, de mettre ร jour un tableau aprรจs son insertion.
NOTE: Les versions plus rรฉcentes de Hive proposent des fonctionnalitรฉs mises ร jour. Hive 0.14 a introduit les commandes UPDATE et DELETE, et les versions ultรฉrieures ont ajoutรฉ la prise en charge complรจte des transactions ACID.
Le tableau ci-dessous rรฉsume la comparaison.
| Aspect | Base de donnรฉes relationnelle | Ruche Apache |
|---|---|---|
| Validation du schรฉma | รcrire | En lecture |
| Volume de donnรฉes typique | Gigaoctets en tรฉraoctets | Des tรฉraoctets aux pรฉtaoctets |
| Charge de travail | Lectures et รฉcritures OLTP au niveau des lignes | Analyse par lots de balayage complet |
| Langage de requรชte | SQL | HQL, un dialecte inspirรฉ de SQL |
| De bout en bout | Moteur de base de donnรฉes | Travaux de cluster distribuรฉs |
Ruche Architecture
Le schรฉma ci-dessous explique Apache Architecture de la ruche en dรฉtail.
Hive se compose principalement de 3 parties essentielles :
- Clients Hive
- Services de ruche
- Stockage et calcul Hive
Clients de la ruche
Hive propose diffรฉrents pilotes pour communiquer avec diffรฉrents types d'applications. Pour les applications basรฉes sur Thrift, il fournit un client Thrift.
Pour Java Pour les applications connexes, il fournit des pilotes JDBC. Pour tout autre type d'application, il fournit des pilotes ODBC. Ces clients et pilotes communiquent ensuite avec le serveur Hive via les services Hive.
Services de la ruche
Les interactions entre le client et Hive s'effectuent via les services Hive. Pour toute opรฉration de requรชte dans Hive, le client doit communiquer par l'intermรฉdiaire de ces services.
L'interface de ligne de commande (CLI) fait office de service Hive pour les opรฉrations DDL. Tous les pilotes communiquent avec le serveur Hive et le pilote principal des services Hive, comme illustrรฉ dans le schรฉma d'architecture ci-dessus.
Le pilote des services Hive est le pilote principal : il communique avec JDBC, ODBC et dโautres applications spรฉcifiques au client, puis transmet leurs requรชtes au mรฉtastore et au systรจme de fichiers pour un traitement ultรฉrieur.
Stockage et informatique Hive
Les services Hive, tels que le mรฉtastore, le systรจme de fichiers et le client de tรขches, communiquent ร leur tour avec le stockage Hive et effectuent les actions suivantes :
- Les mรฉtadonnรฉes relatives aux tables crรฉรฉes dans Hive sont stockรฉes dans Hive. base de donnรฉes de mรฉtadonnรฉes.
- Les rรฉsultats des requรชtes et les donnรฉes chargรฉes dans les tables sont stockรฉs dans le cluster Hadoop sur HDFS.
Flux d'exรฉcution des tรขches
Le diagramme ci-dessous tracune seule requรชte de l'interface utilisateur aux DataNodes et retour.
Le diagramme ci-dessus permet de comprendre le flux d'exรฉcution des tรขches dans Hive avec Hadoop. Le flux de donnรฉes dans Hive suit le modรจle suivant.
- Exรฉcution d'une requรชte depuis l'interface utilisateur
- Le pilote interagit avec le compilateur pour obtenir le plan d'exรฉcution. (Ici, le terme ยซ plan ยป dรฉsigne le processus d'exรฉcution de la requรชte et la collecte des mรฉtadonnรฉes associรฉes.)
- Le compilateur crรฉe le plan d'exรฉcution de la tรขche. Il communique ensuite avec le mรฉtastore pour obtenir la requรชte de mรฉtadonnรฉes.
- Le mรฉtastore renvoie des informations de mรฉtadonnรฉes au compilateur.
- Le compilateur communique avec le pilote en lui soumettant le plan d'exรฉcution de la requรชte.
- Le pilote envoie des plans d'exรฉcution au moteur d'exรฉcution
- Le moteur d'exรฉcution (EE) sert de pont entre Hive et Hadoop pour traiter la requรชte, y compris les opรฉrations DFS :
- L'EE contacte d'abord le NameNode, puis les DataNodes pour obtenir les valeurs stockรฉes dans les tables.
- L'EE rรฉcupรจre les enregistrements souhaitรฉs depuis les DataNodes. Les donnรฉes de la table rรฉsident uniquement sur les DataNodes ; depuis le NameNode, elle ne rรฉcupรจre que les mรฉtadonnรฉes nรฉcessaires ร la requรชte.
- Il collecte les donnรฉes rรฉelles des nลuds de donnรฉes liรฉs ร la requรชte mentionnรฉe.
- L'EE communique de maniรจre bidirectionnelle avec le mรฉtastore pour effectuer des opรฉrations DDL (langage de dรฉfinition de donnรฉes) telles que : CRรER, SUPPRIMER et MODIFIER sur les tables et les bases de donnรฉes. Le mรฉtastore stocke uniquement les noms des bases de donnรฉes, des tables et des colonnes.
- L'EE communique ensuite avec les dรฉmons Hadoop tels que le NameNode, les DataNodes et les tรขches. tracker pour exรฉcuter la requรชte sur le systรจme de fichiers Hadoop
- Rรฉcupรฉration des rรฉsultats du pilote
- Envoi des rรฉsultats au moteur d'exรฉcution. Une fois les rรฉsultats rรฉcupรฉrรฉs des nลuds de donnรฉes vers le moteur d'exรฉcution, celui-ci les renvoie au pilote et ร l'interface utilisateur (front-end).
Hive reste en contact avec le systรจme de fichiers Hadoop et ses dรฉmons via le moteur d'exรฉcution. La flรจche en pointillรฉs sur le schรฉma illustre cette communication.
Diffรฉrents modes de Hive
Hive peut fonctionner selon deux modes, en fonction de la taille des nลuds de donnรฉes dans Hadoop. Ces modes sont :
- Mode local
- Mode MapReduce
Quand utiliser le mode local
- Si Hadoop est installรฉ en mode pseudo-distribuรฉ avec un seul nลud de donnรฉes, nous utilisons Hive dans ce mode.
- Si la taille des donnรฉes est suffisamment petite pour รชtre limitรฉe ร une seule machine locale, nous pouvons utiliser ce mode.
- Le traitement sera trรจs rapide sur des ensembles de donnรฉes plus petits prรฉsents dans la machine locale
Quand utiliser le mode MapReduce
- Si Hadoop possรจde plusieurs nลuds de donnรฉes et que les donnรฉes sont rรฉparties sur ces diffรฉrents nลuds, nous utilisons Hive dans ce mode.
- Il fonctionne sur de grandes quantitรฉs de donnรฉes et la requรชte s'exรฉcute en parallรจle.
- Le traitement de grands ensembles de donnรฉes avec de meilleures performances peut รชtre obtenu grรขce ร ce mode
Dans Hive, il est possible de dรฉfinir une propriรฉtรฉ indiquant le mode de fonctionnement. Par dรฉfaut, Hive fonctionne en mode MapReduce ; pour le mode local, vous pouvez utiliser la configuration suivante :
SET mapred.job.tracker=local;
ร partir de la version 0.7, Hive prend en charge un mode qui exรฉcute automatiquement les tรขches MapReduce en local. Sur Hive 4.x, le moteur par dรฉfaut est Apache Tez ; cette propriรฉtรฉ s'applique donc ร l'ancienne mรฉthode MapReduce.
Qu'est-ce que Hive Server2 (HS2) ?
HiveServer2 (HS2) est une interface serveur qui remplit les fonctions suivantes :
- Permet aux clients distants d'exรฉcuter des requรชtes sur Hive
- Rรฉcupรจre les rรฉsultats de ces requรชtes
Les versions actuelles ajoutent des fonctionnalitรฉs avancรฉes basรฉes sur Thrift RPC, telles que :
- Concurrence multi-client
- Authentification
HS2 se situe derriรจre Beeline et chaque session JDBC ou ODBC, raison pour laquelle il a remplacรฉ l'interface de ligne de commande Hive mono-utilisateur. Opรฉrateurs HiveQL et fonctions intรฉgrรฉes La consultation est la prochaine รฉtape naturelle.


