Partage de technologie

Introduction à Hive et à son architecture

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Qu’est-ce que la Ruche ?

  • Un entrepôt de données basé sur Hadoop, adapté à certaines applications à haute latence (développement hors ligne), peut mapper des fichiers de données structurés et semi-structurés stockés dans des fichiers Hadoop dans une table de base de données et fournir des données de type SQL basées sur la table A requête. modèle, appelé Hive Query Language (HQL), pour accéder et analyser de grands ensembles de données stockés dans des fichiers Hadoop ;
  • Le cœur de Hive est de convertir HQL en un programme MapReduce, puis de soumettre le programme au cluster Hadoop pour exécution ;
  • Hive lui-même ne stocke ni ne calcule de données. Il s'appuie entièrement sur HDFS et MapReduce. Les tables de Hive sont des tables purement logiques ;

Qu'est-ce qu'un entrepôt de données ?

  • L'entrepôt de données lui-même ne « produit » aucune donnée, et ses données proviennent de différents systèmes externes ;
  • Dans le même temps, l'entrepôt de données lui-même n'a pas besoin de « consommer » de données et les résultats sont ouverts à diverses applications externes ;
  • C'est pourquoi on l'appelle un « entrepôt » et non une « usine » ;

Architecture et composants de la ruche

Insérer la description de l'image ici

  • Méta-boutique: Généralement stockées dans des bases de données relationnelles telles que Mysql/derby, les métadonnées dans Hive incluent le nom de la table, les colonnes et partitions de la table et leurs attributs, les attributs de la table (qu'il s'agisse d'une table externe, etc.), le répertoire où se trouvent les données de la table, etc. ;
  • Conducteur : Pilote, comprenant un analyseur de syntaxe, un compilateur de plan, un optimiseur et un exécuteur. Complétez les instructions de requête HQL à partir de l'analyse lexicale, de l'analyse syntaxique, de la compilation, de l'optimisation et de la génération de plans de requête. Le plan de requête généré est stocké dans HDFS puis exécuté par l'appel du moteur d'exécution ;
    • Analyseur (analyseur SQL): Convertissez les chaînes SQL en arbre de syntaxe abstraite AST et effectuez une analyse syntaxique sur l'AST, par exemple si la sémantique SQL est correcte, si la table existe et si les champs existent ;
    • Compilateur (Plan physique): Compiler AST pour générer un plan d'exécution logique (DAG);
    • Optimiseur (Optimiseur de requête): Optimiser le plan d'exécution logique;
    • Exécution: Convertir le plan d'exécution logique en un plan physique exécutable, qui est un programme MapReduce/Spark ;

Processus d'exécution HQL

Insérer la description de l'image ici

  1. Faire une demande: Initier une demande d'exécution depuis l'UI vers le Driver ;
  2. Obtenez le plan d'exécution : Le pilote envoie la demande de l'utilisateur au compilateur pour obtenir le plan d'exécution ;
  3. Obtenez des métadonnées : Le compilateur obtient les métadonnées pertinentes du magasin Meta en fonction des informations pertinentes sur la table et la partition dans l'instruction SQL ;
  4. Renvoie les métadonnées : Le méta-magasin renvoie les métadonnées correspondantes au compilateur ;
  5. Plan d'exécution du retour : Analysez et optimisez SQL en fonction des métadonnées des tables et des partitions pour générer des plans d'exécution logiques. Le plan est un graphe DAG, et chaque étape correspond à une opération de cartographie ou de réduction MapReduce ;
  6. Exécutez le plan d'exécution : Envoyez le plan d'exécution au moteur d'exécution, qui soumettra le plan d'exécution logique à Hadoop pour exécution sous la forme de MapReduce ;
  7. Les résultats d'exécution sont obtenus : Le pilote collecte les résultats en cours d'exécution et les envoie à l'interface utilisateur ;