Dans ce didacticiel, vous apprendrez-
- Qu'est-ce que Hive?
- Architecture de la ruche
- Différents modes de ruche
- Qu'est-ce que Hive Server2 (HS2)?
Qu'est-ce que Hive?
Hive est un outil ETL et d'entreposage de données développé sur Hadoop Distributed File System (HDFS). Hive facilite le travail pour effectuer des opérations telles que
- Encapsulation des données
- Requêtes ad hoc
- Analyse d'énormes ensembles de données
Caractéristiques importantes de Hive
- 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 en tant qu'entrepôt de données conçu pour gérer et interroger uniquement les données structurées stockées dans des tables.
- Tout en traitant des données structurées, Map Reduce ne dispose pas de fonctionnalités d'optimisation et de convivialité comme les UDF, contrairement au framework Hive. L'optimisation des requêtes fait référence à un moyen efficace d'exécution des requêtes en termes de performances.
- Le langage inspiré de SQL de Hive sépare l'utilisateur de la complexité de la programmation de Map Reduce. 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, etc. pour faciliter l'apprentissage.
- La programmation de Hadoop fonctionne sur des fichiers plats. Ainsi, Hive peut utiliser des structures de répertoires pour «partitionner» les données afin d'améliorer les performances sur certaines requêtes.
- Un nouveau et important composant de Hive, c'est-à-dire Metastore, utilisé pour stocker les informations de schéma. Ce Metastore réside généralement dans une base de données relationnelle. Nous pouvons interagir avec Hive en utilisant des méthodes telles que
- GUI Web
- Interface Java Database Connectivity (JDBC)
- La plupart des interactions ont tendance à avoir lieu 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)
- En général, la syntaxe HQL est similaire à la syntaxe SQL que la plupart des analystes de données connaissent. L'exemple de requête ci-dessous affiche tous les enregistrements présents dans le nom de table mentionné.
- Exemple de requête : sélectionnez * dans
- Exemple de requête : sélectionnez * dans
- Hive prend en charge quatre formats de fichiers: TEXTFILE, SEQUENCEFILE, ORC et RCFILE (Record Columnar File).
- Pour le stockage de métadonnées mono-utilisateur, Hive utilise la base de données derby et pour le cas de métadonnées multi-utilisateurs ou de métadonnées partagées, Hive utilise MYSQL.
Pour configurer MySQL en tant que base de données et pour stocker les informations de méta-données, consultez le didacticiel "Installation et configuration de HIVE et MYSQL"
Certains des points clés sur Hive:
- La principale différence entre HQL et SQL est que la requête Hive s'exécute sur l'infrastructure Hadoop plutôt que sur la base de données traditionnelle.
- L'exécution de la requête Hive ressemblera à une série de tâches de réduction de carte générées automatiquement.
- Hive prend en charge les concepts de partition et de compartiments pour une récupération facile des données lorsque le client exécute la requête.
- Hive prend en charge les UDF (fonctions définies par l'utilisateur) spécifiques personnalisées pour le nettoyage des données, le filtrage, etc. Selon les exigences des programmeurs, on peut définir des UDF Hive.
Bases de données relationnelles Hive Vs: -
En utilisant Hive, nous pouvons exécuter des fonctionnalités particulières qui ne sont pas obtenues dans les bases de données relationnelles. Pour une énorme quantité de données en péta-octets, il est important de les interroger et d'obtenir des résultats en quelques secondes. Et Hive le fait assez efficacement, il traite les requêtes rapidement et produit des résultats en un temps record.
Voyons maintenant ce qui rend Hive si rapide.
Les principales différences entre les bases de données Hive et relationnelles sont les suivantes;
Les bases de données relationnelles sont de type " Schéma en lecture et Schéma en écriture ". Créez d'abord une table puis insérez des données dans la table particulière. Sur les tables de bases de données relationnelles, des fonctions telles que les insertions, les mises à jour et les modifications peuvent être exécutées.
Hive est " Schéma en lecture uniquement ". Ainsi, des fonctions comme la mise à jour, les modifications, etc. ne fonctionnent pas avec cela. Parce que la requête Hive dans un cluster typique s'exécute sur plusieurs nœuds de données. Il n'est donc pas possible de mettre à jour et de modifier les données sur plusieurs nœuds (versions Hive inférieures à 0,13).
En outre, Hive prend en charge le modèle « LIRE plusieurs ÉCRIRE UNE FOIS ». Ce qui signifie qu'après avoir inséré la table, nous pouvons mettre à jour la table dans les dernières versions de Hive.
REMARQUE : Cependant, la nouvelle version de Hive est fournie avec des fonctionnalités mises à jour. Les versions Hive (Hive 0.14) proposent des options de mise à jour et de suppression en tant que nouvelles fonctionnalités
Architecture de la ruche
La capture d'écran ci-dessus explique en détail l'architecture Apache Hive
La ruche se compose principalement de 3 parties principales
- Clients Hive
- Services de la ruche
- Stockage et informatique Hive
Clients Hive:
Hive fournit différents pilotes pour la communication avec un type d'application différent. Pour les applications basées sur Thrift, il fournira le client Thrift pour la communication.
Pour les applications liées à Java, il fournit des pilotes JDBC. Autre que tout type d'application fourni des pilotes ODBC. Ces clients et pilotes communiquent à leur tour à nouveau avec le serveur Hive dans les services Hive.
Services de la ruche:
Les interactions des clients avec Hive peuvent être effectuées via les services Hive. Si le client souhaite effectuer des opérations liées aux requêtes dans Hive, il doit communiquer via les services Hive.
L'interface de ligne de commande sert de service Hive pour les opérations DDL (Data Definition Language). Tous les pilotes communiquent avec le serveur Hive et avec le pilote principal des services Hive, comme indiqué dans le diagramme d'architecture ci-dessus.
Le pilote présent dans les services Hive représente le pilote principal et communique tous les types d'applications JDBC, ODBC et autres applications spécifiques au client. Le pilote traitera ces demandes provenant de différentes applications vers des méta-magasins et des systèmes de terrain pour un traitement ultérieur.
Stockage et informatique Hive:
Les services Hive tels que le Meta Store, le système de fichiers et Job Client communiquent à leur tour avec le stockage Hive et exécutent les actions suivantes
- Les informations de métadonnées des tables créées dans Hive sont stockées dans la "Base de données de stockage Meta" de Hive.
- Les résultats des requêtes et les données chargées dans les tables seront stockés dans le cluster Hadoop sur HDFS.
Flux d'exécution des travaux:
À partir de la capture d'écran ci-dessus, nous pouvons comprendre le flux d'exécution du Job dans Hive avec Hadoop
Le flux de données dans Hive se comporte selon le modèle suivant;
- Exécution d'une requête depuis l'interface utilisateur (interface utilisateur)
- Le pilote interagit avec le compilateur pour obtenir le plan. (Ici, le plan fait référence à l'exécution de la requête) processus et la collecte d'informations de métadonnées associées
- Le compilateur crée le plan pour un travail à exécuter. Compilateur communiquant avec le Meta Store pour obtenir une demande de métadonnées
- Le magasin de méta renvoie les informations de métadonnées au compilateur
- Compilateur communiquant avec Driver avec le plan proposé pour exécuter la requête
- Pilote Envoi des plans d'exécution au moteur d'exécution
- Execution Engine (EE) agit comme un pont entre Hive et Hadoop pour traiter la requête. Pour les opérations DFS.
- EE doit d'abord contacter le nœud de nom, puis les nœuds de données pour obtenir les valeurs stockées dans les tables.
- EE va récupérer les enregistrements souhaités à partir des nœuds de données. Les données réelles des tables résident uniquement dans le nœud de données. À partir du nœud de nom, il récupère uniquement les informations de métadonnées pour la requête.
- Il collecte des données réelles à partir des nœuds de données liés à la requête mentionnée
- Execution Engine (EE) communique de manière bidirectionnelle avec le magasin Meta présent dans Hive pour effectuer des opérations DDL (Data Definition Language). Ici, les opérations DDL telles que CREATE, DROP et ALTERING des tables et des bases de données sont effectuées. Le magasin Meta stockera des informations sur le nom de la base de données, les noms de table et les noms de colonne uniquement. Il récupérera les données liées à la requête mentionnée.
- Le moteur d'exécution (EE) communique à son tour avec les démons Hadoop tels que le nœud de nom, les nœuds de données et le suivi des travaux pour exécuter la requête par-dessus 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 l'EE, il renverra les résultats au pilote et à l'interface utilisateur (frontal)
Hive en contact permanent avec le système de fichiers Hadoop et ses démons via le moteur d'exécution. La flèche en pointillé dans le diagramme de flux de travaux montre la communication du moteur d'exécution avec les démons Hadoop.
Différents modes de ruche
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 de réduction de la carte
Quand utiliser le mode local:
- Si Hadoop est installé sous pseudo mode avec un nœud de données, nous utilisons Hive dans ce mode
- Si la taille des données est plus petite en terme de 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 de réduction de carte:
- Si Hadoop a plusieurs nœuds de données et que les données sont distribuées sur différents nœuds, nous utilisons Hive dans ce mode
- Il fonctionnera sur une grande quantité d'ensembles de données et de requêtes s'exécutant de manière parallèle
- Le traitement de grands ensembles de données avec de meilleures performances peut être réalisé grâce à ce mode
Dans Hive, nous pouvons définir cette propriété pour mentionner quel mode Hive peut fonctionner? Par défaut, cela fonctionne en mode de réduction de carte et pour le mode local, vous pouvez avoir le paramètre suivant.
Hive pour travailler en mode local
SET mapred.job.tracker = local;
À partir de la version 0.7 de Hive, il prend en charge un mode pour exécuter automatiquement les tâches de réduction de la carte en mode local.
Qu'est-ce que Hive Server2 (HS2)?
HiveServer2 (HS2) est une interface serveur qui exécute les fonctions suivantes:
- Permet aux clients distants d'exécuter des requêtes sur Hive
- Récupérer les résultats des requêtes mentionnées
De la dernière version, il a des fonctionnalités avancées basées sur Thrift RPC comme;
- Accès simultané à plusieurs clients
- Authentification
Résumé:
Hive est un outil ETL et d'entrepôt de données au-dessus de l'écosystème Hadoop et utilisé pour le traitement de données structurées et semi-structurées.
- Hive est une base de données présente dans l'écosystème Hadoop qui effectue des opérations DDL et DML et fournit un langage de requête flexible tel que HQL pour une meilleure interrogation et un meilleur traitement des données.
- Il offre tellement de fonctionnalités par rapport au RDMS qui présente certaines limitations.
Pour que la logique spécifique à l'utilisateur réponde aux exigences du client.
- Il offre la possibilité d'écrire et de déployer des scripts personnalisés et des fonctions définies par l'utilisateur.
- En outre, il fournit des partitions et des compartiments pour les logiques spécifiques au stockage.