web-dev-qa-db-fra.com

Que font le métastore et le nœud de nom Hive dans un cluster?

Dans un cluster sur lequel Hive est installé, qu'ont le métastore et le naménode? Je comprends que le métastore dispose de tous les détails du schéma de table, de la partition et des métadonnées. Maintenant, quelles sont ces métadonnées? alors qu'est-ce que le namenode a? et où ce métastore est-il présent dans un cluster?

13
DrewRose

NameNode conserve l'arborescence de répertoires de tous les fichiers du système de fichiers et indique où sont conservées les données du fichier dans le cluster. Il garde également une trace de tous les DataNode (Dead + Live) via le mécanisme de pulsation. Il aide également le client pour les lectures/écritures en recevant leurs demandes et en les redirigeant vers le DataNode approprié.

Les métadonnées que metastore stocke des éléments tels que:

ID de base de données

ID des tables

ID de l'index

Le moment de la création d'un index

Le temps de création d'une table

ID de rôles attribués à un utilisateur particulier

InputFormat utilisé pour une table

OutputFormat utilisé pour une table, etc.

Est-ce ce que tu voulais savoir?

Et il n'est pas obligatoire d'avoir métastore dans le cluster lui-même. Toute machine (à l'intérieur ou à l'extérieur du cluster) disposant d'une base de données compatible JDBC peut être utilisée pour le métastore.

HTH

P.S: Le diagramme E/R de metastore peut être utile.

26
Tariq

Les données Hive (pas les métadonnées) sont réparties sur les serveurs Hadoop HDFS DataNode. En général, chaque bloc de données est stocké sur 3 DataNodes différents. NameNode enregistre quels nœuds de données ont quels blocs de données réelles.

Pour un environnement de production Hive, le service de métastore doit s'exécuter dans une machine virtuelle isolée. Les processus Hive peuvent communiquer avec le service métastore à l'aide de Thrift. Les données du métastore Hive sont conservées dans une base de données ACID telle que Oracle DB ou MySQL. Vous pouvez utiliser SQL pour déterminer le contenu du métastore Hive:

Voici les tables du métastore Hive:

SQL> select table_name from user_tables;

DBS
DATABASE_PARAMS
SEQUENCE_TABLE
SERDES
TBLS
SDS
CDS
BUCKETING_COLS
TABLE_PARAMS
PARTITION_KEYS
SORT_COLS
SD_PARAMS
COLUMNS_V2
SERDE_PARAMS

Vous pouvez décrire la structure de chaque table:

SQL> describe partition_keys;

TBL_ID                       NUMBER
PKEY_COMMENT                 VARCHAR2(4000)
PKEY_NAME                    VARCHAR2(128)
PKEY_TYPE                    VARCHAR2(767)
INTEGER_IDX                  NUMBER(10)

Et trouvez le contenu de chaque table:

SQL> select * from partition_keys;

Donc, si dans Hive, vous créez "CREATE TABLE xxx (...) PARTITIONED BY (...)", les données de partitionnement Hive sont stockées dans la base de données de métastore (Oracle, MySQL ...). 

Par exemple, dans Hive si vous créez une table comme celle-ci:

Hive> create table employee_table (id bigint, name string) partitioned by (region string);

Vous le trouverez dans le métastore:

SQL> select tbl_id,pkey_name from partition_keys;

TBL_ID PKEY_NAME
------ ---------
     8    region

SQL> select tbl_name from tbls where tbl_id=8;

TBL_NAME
--------
employee_table

Lorsque vous insérez des données dans employee_table, les données seront stockées dans HDFS sur Hadoop DataNodes et le NameNode gardera la trace des DataNodes contenant les données.

14
Jeff Taylor

Metastore - C'est une base de données qui stocke les métadonnées a.k.a tous les détails sur les tables que vous créez dans Hive. Par défaut, Hive est fourni avec la base de données Derby et l’utilise. Mais vous pouvez utiliser n'importe quelle autre base de données telle que MySQL ou Oracle. 

Utilisation de Metastore : Chaque fois que vous lancez une requête à partir de votre interface de ligne de commande Hive, le moteur d'exécution rassemble tous les détails de la table et crée un plan d'exécution. Ces détails proviennent de Metastore. Enfin, le moteur d’exécution envoie le travail à Hadoop. À partir de là, le travail de réduction de carte Hadoop commun est exécuté et le résultat est renvoyé à Hive. Le noeud Name communique avec le moteur d'exécution pour exécuter correctement le travail MR.

 enter image description here

3
Prashant_M

Le diagramme ci-dessus est excellent pour comprendre la communication Hive et Hadoop.

En ce qui concerne Hive-Metastore (pas hadoop - metastore):

  1. Il n’est pas nécessaire/obligatoire d’avoir métastore dans votre environnement hadoop, c’est nécessaire uniquement si vous utilisez Hive au-dessus de votre cluster HDFS.

  2. Metastore est le référentiel de métadonnées pour Hive uniquement et est utilisé par Hive pour stocker uniquement les métadonnées de l'objet de base de données créé (pas les données réelles, qui sont déjà dans HDFS car Hive ne stocke pas de données. Hive utilise le système de fichiers déjà stocké.

  3. L'implémentation Hive nécessitait un service de métastore utilisant n'importe quel SGBDR. 

En ce qui concerne Namenode (hadoop-namenode):

  1. partie centrale de Hadoop, qui se comporte comme métastore pour cluster. 

  2. Pas un SGBDR. Stocke les méta-informations du système de fichiers dans le système de fichiers uniquement.

0
Arjuna Das