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.


