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 c'est: Un outil ETL et d'entreposage de donnรฉes qui ajoute des tables, des lignes et des colonnes aux fichiers stockรฉs dans HDFS.
  • ๐Ÿ‡ง๐Ÿ‡ท Mรฉtastore : Les informations de schรฉma rรฉsident dans un mรฉtamatรฉriau relationnel, gรฉrรฉ par Derby pour un utilisateur et par MySQL pour un accรจs partagรฉ.
  • ???? Contre un SGBDR : Hive valide le schรฉma ร  la lecture, รฉvolue horizontalement et privilรฉgie les analyses approfondies aux mises ร  jour au niveau des lignes gรฉrรฉes par une base de donnรฉes.
  • ???? Trois couches: L'architecture est composรฉe de clients, de services et de stockage, le pilote coordonnant le compilateur, le mรฉtastore et le moteur d'exรฉcution.
  • ๐Ÿ”€ Deux modes: Le mode local convient ร  un seul nล“ud de donnรฉes et aux petits fichiers, tandis que le mode MapReduce rรฉpartit l'exรฉcution sur un cluster multi-nล“uds.
  • ???? Serveur de ruche 2 : L'interface HS2 basรฉe sur Thrift ajoute la gestion simultanรฉe de plusieurs clients et l'authentification pour les sessions ร  distance.

Architecture et modes de la ruche

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.

Diagramme d'architecture d'Apache Hive montrant les clients, les services, le stockage et le calcul

Hive se compose principalement de 3 parties essentielles :

  1. Clients Hive
  2. Services de ruche
  3. 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.

Diagramme de flux d'exรฉcution des tรขches Hive tracenvoyer une requรชte depuis l'interface utilisateur vers les nล“uds de donnรฉes

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.

  1. Exรฉcution d'une requรชte depuis l'interface utilisateur
  2. 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.)
  3. 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.
  4. Le mรฉtastore renvoie des informations de mรฉtadonnรฉes au compilateur.
  5. Le compilateur communique avec le pilote en lui soumettant le plan d'exรฉcution de la requรชte.
  6. Le pilote envoie des plans d'exรฉcution au moteur d'exรฉcution
  7. 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
  1. Rรฉcupรฉration des rรฉsultats du pilote
  2. 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.

FAQ

Hive est une couche d'interrogation par lots qui analyse de grandes tables via des tรขches distribuรฉes. HBase est une base de donnรฉes NoSQL conรงue pour des lectures et รฉcritures alรฉatoires en quelques millisecondes sur des lignes individuelles. Elles rรฉpondent ร  des besoins d'accรจs opposรฉs et sont souvent exรฉcutรฉes en parallรจle.

Hive fonctionne sur MapReduce, Apache Tez ou Apache SparkMapReduce est obsolรจte et Hive 4.x utilise par dรฉfaut Tez, qui conserve les rรฉsultats intermรฉdiaires en mรฉmoire au lieu de les รฉcrire sur disque entre les รฉtapes.

Une table gรฉrรฉe confรจre ร  Hive la propriรฉtรฉ des mรฉtadonnรฉes et des fichiers, donc supprimez-laping Il supprime les donnรฉes du rรฉpertoire de l'entrepรดt de donnรฉes. Une table externe stocke uniquement les mรฉtadonnรฉes et supprime les donnรฉes.ping Il laisse les fichiers sous-jacents intacts.

Les modรจles de coรปts appris rรฉinjectent des statistiques d'exรฉcution dans le planificateur afin de prรฉdire avec une plus grande prรฉcision le volume d'analyse, l'ordre de jointure et l'รฉlagage des partitions que les estimations statiques. Les plateformes cloud fournissent les mรชmes signaux sous forme de recommandations de compactage et de disposition des partitions.

Copilot gรฉnรจre des jointures HiveQL, des fonctions de fenรชtrage et Java Les squelettes de fonctions dรฉfinies par l'utilisateur (UDF) proviennent d'un commentaire, ce qui permet de rรฉduire le code rรฉpรฉtitif. Les noms de colonnes, les clรฉs de partition et les types de donnรฉes doivent toutefois รชtre vรฉrifiรฉs au prรฉalable par rapport au mรฉtastore rรฉel.

Oui. Hive 0.14 a introduit les opรฉrations UPDATE et DELETE, et les versions ultรฉrieures ont offert une prise en charge complรจte d'ACID pour les tables transactionnelles. Hive 4.x รฉtend ces fonctionnalitรฉs grรขce aux tables Apache Iceberg, avec isolation par instantanรฉ et รฉvolution du schรฉma.

Les trois exposent des requรชtes SQL sur les mรชmes fichiers. Hive privilรฉgie les traitements par lots de longue durรฉe et gรจre le mรฉtastore utilisรฉ par les autres. Spark SQL convient aux pipelines mixtes ; Trino cible les requรชtes interactives provenant de plusieurs sources.

Oui, principalement via Hive Metastore, qui reste la norme en matiรจre de catalogues. SparkTrino, Presto et Flink lisent tous les donnรฉes. Hive, quant ร  lui, continue de gรฉrer les transformations par lots planifiรฉes et les chargements d'entrepรดt de donnรฉes.

Rรฉsumez cet article avec :