Architecture et commandes Apache Hive : modes, caractéristiques et applications

Publié: 2021-06-30

Table des matières

Qu'est-ce que la ruche ?

La ruche Apache est un outil d'entreposage de données open source développé par Facebook pour le traitement distribué et l'analyse de données. Il est développé sur le système de fichiers distribués Hadoop (HDFS). Un mécanisme de projection de structure sur les données dans Hadoop est fourni par Hive. Un langage de type SQL appelé HiveQL (HQL) est utilisé pour interroger ces données. Il existe une similitude entre les tables de Hive et les tables d'une base de données relationnelle. Les requêtes Hive peuvent être facilement écrites par toute personne familiarisée avec SQL.

Voici quelques fonctionnalités de Hive :

  • Stockage des informations de schéma dans une base de données et des données traitées dans HDFS.
  • Conçu pour OLAP.
  • Le langage d'interrogation est HiveQL ou HQL, qui est similaire à SQL.
  • Il est rapide, familier, évolutif et extensible.

Utilisations de la ruche

  • Il s'agit du stockage distribué Apache Hive.
  • Des outils sont fournis pour permettre aux utilisateurs d'extraire, de transformer et de charger facilement des données.
  • Divers formats de données sont proposés pour fournir la structure.
  • Les fichiers stockés dans Hadoop Distributed File System (HDFS) sont accessibles par Hive.

Commandes de Hive

Les commandes de la ruche sont :

  1. Langage de définition de données (DDL) : les tables et autres objets de la base de données sont créés et modifiés via ces commandes.
  • CREATE : Il est utilisé pour créer une table ou une base de données.
  • SHOW : Il est utilisé pour afficher la base de données, la table, les propriétés, etc.
  • ALTER : Il est utilisé pour apporter des modifications à la table existante.
  • DESCRIBE : Il décrit les colonnes de la table.
  • TRUNCATE : utilisé pour tronquer et supprimer définitivement les lignes des tables.
  • DELETE : supprime les données de la table, mais peut être restaurée.
  1. Langage de manipulation de données (DML) : utilisé pour récupérer, stocker, modifier, supprimer, insérer et mettre à jour des données dans la base de données.
  • Syntaxe des instructions LOAD, INSERT

LOAD data <LOCAL> inpath <chemin du fichier> dans la table [nom de la table]

  • Après le chargement des données, les commandes de manipulation de données sont utilisées pour récupérer les données.
  • La fonction d'agrégation de comptage est utilisée pour compter le nombre total d'enregistrements dans une table.
  • Le mot-clé "create external" est utilisé pour créer une table et fournit un emplacement où la table sera créée. Une table EXTERNAL pointe vers n'importe quel emplacement HDFS pour son stockage.
  • Les commandes d'insertion sont utilisées pour charger la table de données Hive. L'« insertion par écrasement » est utilisée pour écraser les données existantes et « l'insertion dans » est utilisée pour ajouter les données dans une donnée existante.
  • Une table est divisée en partitions par la commande "partitionné par" et divisée en compartiments par la commande "clustered by".
  • L'insertion de données génère des erreurs car la partition dynamique n'est pas activée. Par conséquent, les paramètres suivants doivent être définis dans le shell Hive.

définir hive.exec.dynamic.partition=true ;

Pour activer les partitions dynamiques, par défaut, c'est faux

définir hive.exec.dynamic.partition.mode=nonstrict ;

  • La commande 'Drop Table' supprime les données et les métadonnées d'une table
  • Agrégation : Syntaxe :

Sélectionnez le nombre (catégorie DISTINCT) dans le nom de la table ;

La commande comptera différentes catégories de tables 'cate'.

  • Regroupement : Syntaxe :

Sélectionnez la catégorie, la somme (montant) du groupe d'enregistrements txt par catégorie

Le jeu de résultats sera regroupé dans une ou plusieurs colonnes.

  • Join Operation : permet de combiner des champs de deux tables en utilisant des valeurs communes à chaque colonne.
  • Jointure externe gauche : Pour les tables A et B, la jointure externe gauche doit contenir tous les enregistrements de la table « gauche » (A), même si la condition de jointure ne trouve aucun enregistrement correspondant dans la table « droite » (B).
  • Jointure externe droite : Chaque ligne de la table « droite » (B) apparaîtra dans la table jointe au moins une fois.
  • Jointure complète : la table jointe contiendra tous les enregistrements des deux tables. La table jointe contiendra tous les enregistrements des deux tables.

Architecture de la ruche

L ' architecture apache hive est illustrée à la figure 1 .

Liste des principaux composants

Les principaux composants de l' architecture de la ruche sont :

1. Client de la ruche

Différentes applications écrites dans des langages tels que Java, Python, C++, etc. sont communiquées via l'utilisation de différents pilotes fournis par Hive. Il peut être écrit dans n'importe quelle langue selon votre choix. Les clients et les serveurs communiquent à leur tour avec le serveur Hive dans les services Hive.

Généralement, ils sont classés en trois types:

  • Client Thrift : Il est basé sur Apache Thrift pour répondre à une requête d'un client Thrift. Le client Thrift sera utilisé pour la communication pour les applications basées sur Thrift.
  • Client JDBC : JDBC est fourni pour les applications liées à Java. Les applications Java sont connectées au Hive à l'aide du pilote JDBC. Il utilise en outre Thrift pour communiquer avec le serveur Hive.
  • Client ODBC : Les applications basées sur le protocole ODBC sont autorisées à se connecter au Hive via les pilotes ODBC. Semblable à JDBC, il utilise Thrift pour communiquer avec le serveur Hive.

2. Services de la ruche

Les services Hive fournissent des moyens pour les interactions de Hive avec les Clients. Toutes les opérations liées à la requête qui doivent être effectuées par le Client devront être communiquées via les services de location. Pour les opérations DDL (Data Definition Language), CLI agit en tant que service Hive.

Tous les pilotes doivent communiquer avec le serveur Hive puis avec le pilote principal des services Hive. Les pilotes des services Hive représentent le pilote principal qui communique avec les applications spécifiques du client et tous les types de JDBC, ODBC, etc. Les demandes des différentes applications sont traitées par le pilote vers le métastore et les systèmes de terrain qui seront ensuite traités.

Les services offerts par Hive sont :

  • Beeline : Beeline est un shell de commande où un utilisateur peut soumettre ses requêtes au système. Il est pris en charge par HiveServer2. Il s'agit d'un client JDBC basé sur SQLLINE CLI.
  • Hive Server 2 : les clients sont autorisés à exécuter les requêtes sur la ruche. Successeur de HiveServer1, il permet l'exécution de plusieurs requêtes à partir de plusieurs clients. Il fournit le meilleur support pour les clients API ouverts comme JDBC et ODBC.
  • Pilote Hive : l'utilisateur soumet les instructions HiveQL au pilote Hive via le shell de commande. Il envoie la requête au compilateur et crée des descripteurs de session pour la requête.
  • Compilateur Hive : le compilateur Hive est utilisé pour transmettre la requête. À l'aide des métadonnées stockées dans le metastore, le compilateur Hive effectue une analyse sémantique et une vérification de type sur les différents blocs de requête et expressions. Un plan d'exécution est alors généré par le compilateur qui est le DAG (Directed Acyclic Graph). Chaque étape du DAG est une opération de métadonnées, une opération sur HDFS ou une tâche de mappage/réduction.
  • Optimiseur : Le rôle principal de l'optimiseur est d'effectuer des opérations de transformation sur le plan d'exécution. Il augmente l'efficacité et l'évolutivité en divisant les tâches.
  • Moteur d'exécution : Après la réalisation des étapes de compilation et d'optimisation, c'est le rôle du moteur d'exécution qui exécute le plan d'exécution créé par le compilateur. Le plan est exécuté à l'aide de Hadoop dans l'ordre de leurs dépendances.
  • Metastore : Metastore est généralement une base de données relationnelle qui stocke les informations de métadonnées liées à la structure des tables et des partitions. Il s'agit d'un référentiel central qui inclut également le stockage d'informations sur les types de colonne et de colonne. Les informations relatives au sérialiseur et au désérialiseur sont également stockées dans Metastore qui est nécessaire pour les opérations de lecture/écriture avec les fichiers HDFS qui stockent les données. Une interface Thrift est fournie par Metastore pour interroger et manipuler les métadonnées Hive.

Metastore peut être configuré en deux modes :

  • Distant : ce mode est utile pour les applications non Java et, en mode distant, le metastore est un service Thrift.
  • Intégré : dans ce mode, le client peut interagir directement avec le metastore via le JDBC.
  • HCatalog : la couche de gestion des tables et du stockage pour Hadoop est le HCatalog. Différents outils de traitement de données pour lire et écrire des données sur la grille sont disponibles comme Pig, MapReduce, etc. Construit sur le métastore Hive, les données tabulaires du métastore Hive sont exposées à d'autres outils de traitement de données.
  • WebHCat : WebHCat est une interface HTTP et une API REST pour HCatalog. Il effectue des opérations de métadonnées Hive et offre un service d'exécution de travaux Hadoop MapReduce (ou YARN), Pig, Hive.

3. Traitement et gestion des ressources

L'exécution des requêtes est réalisée par un framework interne MapReduce.

Le framework MapReduce est un framework logiciel pour le traitement de grandes quantités de données sur de grands clusters de matériel de base. Les données sont divisées en morceaux, puis traitées par des tâches de réduction de carte.

4. Stockage distribué

Les services Hive communiquent avec le stockage Hive pour effectuer les actions suivantes :

  • La « base de données de stockage Meta » de Hive contient les informations de métadonnées des tables créées dans Hive.
  • Le cluster Hadoop sur HDFS stockera les résultats de la requête et les données chargées sur les tables.

Différents modes de ruche

Selon la taille des données, Hive peut fonctionner en deux modes.

  1. Mode local

Le mode local de Hive est utilisé lorsque

  • Le Hadoop installé a un nœud de données et est installé en mode pseudo.
  • La taille des données d'une seule machine locale est plus petite.
  • Traitement rapide sur les machines locales en raison des plus petits ensembles de données présents.
  1. Mode de réduction de carte

Le mode de réduction de carte de Hive est utilisé lorsque

  • Hadoop a plusieurs nœuds de données avec des données distribuées sur les différents nœuds.
  • La taille des données est plus importante et une exécution parallèle de la requête est requise.
  • De grands ensembles de données peuvent être traités avec de meilleures performances.

Caractéristiques de la ruche

  • Les données sont chargées dans les tables après la création des tables et des bases de données.
  • Seules les données structurées stockées dans des tables peuvent être gérées et interrogées par Hive.
  • Le framework Hive présente des fonctionnalités d'optimisation et de convivialité tout en traitant les données structurées qui ne sont pas présentes dans Map Reduce.
  • Pour plus de facilité d'utilisation, le langage inspiré de Hive SQL est une approche plus simple par rapport au langage de programmation complexe de Map Reduce. Des concepts familiers de tableaux, lignes, colonnes, etc. sont utilisés dans Hive.
  • Pour augmenter les performances des requêtes, Hive peut partitionner les données à l'aide d'une structure de répertoires.
  • Hive contient un composant important appelé "Metastore" qui réside dans une base de données relationnelle et stocke les informations de schéma. Deux méthodes peuvent être utilisées pour interagir avec Hive : l'interface graphique Web et l'interface JDBC (Java Database Connectivity).
  • Une interface de ligne de commande (CLI) est utilisée pour la plupart des interactions. La CLI est utilisée pour écrire les requêtes Hive à l'aide du langage de requête Hive (HQL).
  • La syntaxe HQL est similaire à celle de la syntaxe SQL.
  • Quatre formats de fichiers sont pris en charge par Hive ; TEXTFILE, SEQUENCEFILE, ORC et RCFILE (fichier d'enregistrement en colonnes).

Conclusion

Apache Hive est un outil d'entreposage de données open source composé de composants majeurs tels que les clients Hive, les services Hive, le cadre de traitement et la gestion des ressources, et le stockage distribué.

Il est construit au-dessus de l'écosystème Hadoop pour le traitement des structures et des données semi-structurées. L'interface utilisateur fournie par Hive permet à l'utilisateur de soumettre ses requêtes en Hive Query Language (HQL). Ceci est passé au compilateur pour générer un plan d'exécution. Le plan est finalement exécuté par le moteur d'exécution.

Si vous souhaitez en savoir plus sur le Big Data, consultez notre programme PG Diploma in Software Development Specialization in Big Data qui est conçu pour les professionnels en activité et fournit plus de 7 études de cas et projets, couvre 14 langages et outils de programmation, pratique pratique ateliers, plus de 400 heures d'apprentissage rigoureux et d'aide au placement dans les meilleures entreprises.

Consultez nos autres cours de génie logiciel sur upGrad.

Menez la révolution technologique axée sur les données

7 ÉTUDES DE CAS ET PROJETS. ASSISTANCE À L'EMPLOI AVEC LES MEILLEURES ENTREPRISES. MENTOR ÉTUDIANT DÉDIÉ.
Programme de certificat avancé en Big Data de l'IIIT Bangalore