FAQ HadoopConsultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 78, dernière mise à jour : 10 août 2020 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs et de la traduction de la documentation officielle d'Hadoop.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.
Sur ce, nous vous souhaitons une bonne lecture.
L'équipe Big Data
- Qu'est-ce que Hive ?
- Quelles sont les limites de Hive ?
- Quels sont les différents types de tables dans Hive ?
- Où les données d'une table Hive sont-elles stockées ?
- Quels sont les différents composants d'une architecture Hive ?
- Quelles sont les bases de données supportées par Hive pour le stockage des métadonnées ?
- Quels sont les différents modes de déploiement du Metastore dans Hive ?
Initialement développé par Facebook, Apache Hive est un système d'entrepôt de données open source qui permet d'interroger et analyser de grands ensembles de données stockées sur Hadoop. Le projet permet aux développeurs d'écrire des requêtes, dans un langage proche de SQL appelé HiveQL, qui sont ensuite traduites comme des programmes MapReduce sur le cluster. L'avantage est de pouvoir fournir un langage que les développeurs connaissent pour l'écriture des programmes MapReduce.
Hive peut être utilisé sur MapReduce ou Spark et il est mieux adapté pour la préparation de données par lots ou pour une utilisation en tant qu'ETL.
Étant donné que les requêtes Hive sont converties en tâches MapReduce, elles ont une latence élevée, ce qui signifie que les requêtes qui seraient traitées en millisecondes sur des bases de données traditionnelles prendraient plus de temps sur Hive, même pour des ensembles de données plus petits. Les considérations de conception de Hadoop et HDFS imposent aussi certaines contraintes sur ce que Hive peut faire. À la base, Hive n'autorise pas les insertions et mises à jour de lignes dans une table. Il est également important de garder à l'esprit que Hive n'est pas destiné à être utilisé pour des applications ou des systèmes de traitement des transactions en ligne (OLTP) qui nécessitent un traitement interactif. Il est plus adapté aux applications d'entreposage de données et est destiné à être utilisé pour le traitement par lots de données volumineuses immuables, par exemple, les logs d'applications et sites Web ou les enregistrements de données d'appel.
Hive a deux types de tables : les tables gérées ou internes et les tables externes. Dans Hive, lorsqu'on crée une table, Hive gère par défaut les données. Cela signifie que Hive déplace les données dans son répertoire warehouse. Et si l'on supprime une table gérée, Hive supprimera la table, y compris ses données et métadonnées. Les données n'existent plus nulle part. C'est ce que signifie pour Hive de gérer des données.
Les tables externes dans Hive se comportent différemment. Nous pouvons contrôler la création et la suppression des données. L'emplacement des données externes est spécifié au moment de la création de la table. Lors de la création d'une table externe, Hive ne déplace pas les données vers son répertoire warehouse. Il ne vérifie même pas si l'emplacement externe existe au moment où il est défini. Une chose importante à noter est que lorsqu'on supprime une table externe, Hive laissera les données intactes et supprimera uniquement les métadonnées.
Par défaut, les tables Hive sont stockées dans HDFS, dans un répertoire du type */hive/warehouse. Toutefois, il est possible de spécifier un autre emplacement en éditant le paramètre hive.metastore.warehouse.dir dans le fichier de configuration hive-site.xml. Précisons également qu'il s'agit ici d'une table gérée. Pour une table externe, c'est l'utilisateur qui indique l'emplacement où les données doivent être stockées.
L'architecture Hive repose sur les composants suivants :
- le Metastore : le Metastore dans Hive est un référentiel de métadonnées pour les tables et partitions Hive. Il s'agit d'une base de données relationnelle dans laquelle sont stockées les informations comme le schéma et l'emplacement des tables. Ainsi, lorsqu'on crée une table Hive, les informations de définition de la table telles que les noms de colonne, les types de données et les commentaires sont automatiquement stockées dans le Metastore. Le Metastore comprend également les sérialiseurs et désérialiseurs (également appelés SerDe) nécessaires pour lire et écrire des données et les fichiers HDFS correspondants où les données sont stockées. Il agit comme un référentiel de schémas central qui peut être utilisé par les clients Hive et d'autres services comme Spark. Les métadonnées stockées dans le Metastore aident également le pilote de Hive à garder une trace des données distribuées sur le cluster ;
- le pilote : c'est le composant qui reçoit les requêtes ou instructions HiveQL. Lorsqu'il les reçoit, le pilote démarre l'exécution des requêtes en créant des sessions, il surveille également le cycle de vie et l'avancement de l'exécution des requêtes ;
- le compilateur : il effectue la compilation de la requête HiveQL. Cela convertit la requête en un plan d'exécution. Le plan contient les tâches ainsi que les étapes que MapReduce doit effectuer pour obtenir la sortie telle que traduite par la requête ;
- l'optimiseur : il effectue diverses transformations sur le plan d'exécution pour de meilleures performances des requêtes HiveQL ;
- le moteur d'exécution : une fois la compilation et l'optimisation terminées, c'est ce composant qui exécute les tâches telles que définies dans le plan d'exécution ;
- les interfaces Hive : il s'agit notamment de la CLI, l'interface web Hive (HWI) et Hive Server. L'interface de ligne de commande (CLI) est le moyen par défaut d'accéder aux requêtes et commandes Hive. Hive Web Interface (HWI) est une alternative à la CLI pour l'exécution de commandes et requêtes Hive. C'est une interface utilisateur graphique simple qui offre un excellent moyen de démarrer avec Hive. Quant à Hive Server (parfois appelé serveur Thrift), il permet d'exécuter Hive à partir de clients distants écrits dans différents langages. Hive étant écrit en Java, l'interface Thrift agit comme un pont, permettant à d'autres langages d'accéder à Hive, en utilisant un serveur Thrift qui interagit avec le client Java.
Le compilateur est invoqué par le pilote lors de la réception d'une instruction HiveQL. Le compilateur traduit cette instruction en un plan d'exécution composé de tâches MapReduce. Une fois le plan d'exécution optimisé, le pilote soumet les différents jobs MapReduce au moteur d'exécution dans l'ordre défini dans le plan d'exécution. Hive utilise actuellement Hadoop comme moteur d'exécution.
Par défaut, Hive utilise une base de données Derby pour stocker les métadonnées. C'est une base de données intégrée. Vous pouvez toutefois configurer le Metastore avec une base de données externe pour stocker les métadonnées de manière fiable. Pour ce faire, vous devez modifier le fichier de configuration hive-site.xml en spécifiant l'URL de connexion à la base de données externe. Les autres bases de données supportées, à part Derby, sont MySQL, MS SQL Server, Oracle et Postgres.
Il existe trois modes de déploiement du Metastore :
- le mode embarqué (Metastore embarqué) : le mode embarqué est le mode de déploiement par défaut du Metastore. Dans ce mode, le Metastore utilise une base de données Derby, et la base de données et le service Metastore sont intégrés dans le même processus que le service Hive. Ce mode ne peut prendre en charge qu'un seul utilisateur actif à la fois et n'est recommandé qu'à des fins de test ;
- le mode local (Metastore local) : ce mode permet d'avoir de nombreuses sessions Hive, c'est-à-dire que de nombreux utilisateurs peuvent utiliser le Metastore en même temps. Le service Metastore s'exécute toujours dans le même processus que le service Hive, mais il se connecte à une base de données (compatible JDBC comme MySQL) s'exécutant dans un processus séparé, soit sur la même machine, soit sur une machine distante ;
- le mode distant (Metastore distant) : dans ce mode, le service Metastore s'exécute dans son propre processus JVM, et non dans la JVM du service Hive. C'est ce mode qui est recommandé en production.
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.