it-swarm.com.de

Was macht der Hive-Metastore und -Namensknoten in einem Cluster?

Was haben der Metastore und der Namensknoten in einem Cluster, in dem Hive installiert ist? Ich verstehe, dass der Metastore alle Tabellenschema und Partitionsdetails und Metadaten hat. Was sind nun diese Metadaten? was hat dann der namenode? und wo ist dieser Metastore in einem Cluster vorhanden?

13
DrewRose

Der NameNode behält die Verzeichnisstruktur aller Dateien im Dateisystem bei und verfolgt, wo im Cluster die Dateidaten gespeichert werden. Es verfolgt auch den gesamten DataNode (Dead + Live) über den Heartbeat-Mechanismus. Es hilft dem Client auch beim Lesen/Schreiben, indem es seine Anfragen empfängt und sie an den entsprechenden DataNode umleitet.

Die Metadaten, in denen der Metastore speichert, enthalten Folgendes:

IDs der Datenbank

IDs von Tabellen

IDs des Index

Der Zeitpunkt der Indexerstellung

Der Zeitpunkt der Erstellung einer Tabelle

IDs von Rollen, die einem bestimmten Benutzer zugewiesen sind

InputFormat wird für eine Tabelle verwendet

Ausgabeformat für eine Tabelle usw. usw.

Wolltest du das wissen?

Ein Metastore im Cluster selbst ist nicht zwingend erforderlich. Für den Metastore kann jede Maschine (innerhalb oder außerhalb des Clusters) mit einer JDBC-kompatiblen Datenbank verwendet werden.

HTH

P.S: Das E/R-Diagramm des Metastores könnte nützlich sein.

26
Tariq

Hive-Daten (keine Metadaten) werden auf Hadoop HDFS DataNode-Server verteilt. Normalerweise wird jeder Datenblock auf 3 verschiedenen DataNodes gespeichert. Der NameNode verfolgt, welche DataNodes welche Blöcke der tatsächlichen Daten hat.

In einer Hive-Produktionsumgebung sollte der Metastoreservice in einer isolierten JVM ausgeführt werden. Hive-Prozesse können über Thrift mit dem Metastoreservice kommunizieren. Die Hive-Metastore-Daten werden in einer ACID-Datenbank wie Oracle DB oder MySQL gespeichert. Mit SQL können Sie herausfinden, was sich im Hive-Metastore befindet:

Hier sind die Tabellen im Hive-Metastore:

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

Sie können die Struktur jeder Tabelle beschreiben:

SQL> describe partition_keys;

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

Und finde den Inhalt jeder Tabelle:

SQL> select * from partition_keys;

Wenn Sie also in Hive "CREATE TABLE xxx (...) PARTITIONED BY (...)" sind, werden die Hive-Partitionierungsdaten in der Metastore-Datenbank (Oracle, MySQL ...) gespeichert. 

Zum Beispiel in Hive, wenn Sie eine Tabelle wie folgt erstellen:

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

Sie finden das im Metastore:

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

Wenn Sie Daten in employee_table einfügen, werden die Daten in HDFS auf Hadoop DataNodes gespeichert, und der NameNode verfolgt, welche DataNodes die Daten haben.

14
Jeff Taylor

Metastore - Dies ist eine Datenbank, in der Metadaten a.k.a mit allen Details zu den in Hive erstellten Tabellen gespeichert werden. Standardmäßig wird Hive mit der Derby-Datenbank ausgeliefert. Sie können jedoch auch jede andere Datenbank wie MySQL oder Oracle verwenden. 

Use of Metastore : Wenn Sie eine Abfrage von Ihrer Hive-CLI auslösen, sammelt die Ausführungs-Engine alle Details zur Tabelle und erstellt einen Ausführungsplan (Job). Diese Angaben stammen von Metastore. Schließlich sendet die Ausführungs-Engine den Job an Hadoop. Von hier aus wird der allgemeine Hadoop Map Reduce Job ausgeführt und das Ergebnis an Hive zurückgesendet. Der Name-Knoten kommuniziert mit der Ausführungs-Engine, um den MR-Job erfolgreich auszuführen.

 enter image description here

3
Prashant_M

Das obige Diagramm ist ausgezeichnet, um die Kommunikation zwischen Hive und Hadoop zu verstehen.

Hive-Metastore (nicht Hadoop-Metastore):

  1. Es ist nicht zwingend erforderlich, Metastore in Ihrer hadoop-Umgebung zu haben, da dies nur erforderlich ist, wenn Sie Hive zusätzlich zu Ihrem HDFS-Cluster verwenden.

  2. Metastore ist das Metadaten-Repository nur für Hive und wird von Hive nur zum Speichern der Metainformationen des erstellten Datenbankobjekts verwendet (nicht tatsächliche Daten, die bereits in HDFS enthalten sind, da Hive keine Daten speichert. Hive verwendet bereits gespeichertes Dateisystem).

  3. Für die Hive-Implementierung war ein Metastore-Dienst mit RDBMS erforderlich. 

Zu Namenode (hadoop -namenode):

  1. kernteil von Hadoop, der sich wie ein Metastore für Cluster verhält. 

  2. Kein RDBMS. Speichert Metadaten des Dateisystems nur im Dateisystem.

0
Arjuna Das