Hive 配置单元元存储和名称节点在集群中做什么?

Hive 配置单元元存储和名称节点在集群中做什么?,hive,Hive,在安装了配置单元的集群中,metastore和namenode有哪些功能?我知道Metastore拥有所有的表模式、分区细节和元数据。现在这个元数据是什么?那么namenode有什么功能呢?这个元存储在集群中的何处?配置单元数据(不是元数据)分布在Hadoop HDFS数据节点服务器上。通常,每个数据块存储在3个不同的DataNode上。NameNode跟踪哪些DataNodes具有哪些实际数据块 对于配置单元生产环境,metastore服务应该在隔离的JVM中运行。配置单元进程可以使用Thri

在安装了配置单元的集群中,metastore和namenode有哪些功能?我知道Metastore拥有所有的表模式、分区细节和元数据。现在这个元数据是什么?那么namenode有什么功能呢?这个元存储在集群中的何处?

配置单元数据(不是元数据)分布在Hadoop HDFS数据节点服务器上。通常,每个数据块存储在3个不同的DataNode上。NameNode跟踪哪些DataNodes具有哪些实际数据块

对于配置单元生产环境,metastore服务应该在隔离的JVM中运行。配置单元进程可以使用Thrift与metastore服务通信。配置单元元存储数据持久保存在Oracle DB或MySQL等ACID数据库中。您可以使用SQL查找配置单元元存储中的内容:

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
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
以下是配置单元元存储中的表:

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
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
您可以描述每个表的结构:

SQL> describe partition_keys;

TBL_ID                       NUMBER
PKEY_COMMENT                 VARCHAR2(4000)
PKEY_NAME                    VARCHAR2(128)
PKEY_TYPE                    VARCHAR2(767)
INTEGER_IDX                  NUMBER(10)
SQL> select * from partition_keys;
并查找每个表的内容:

SQL> describe partition_keys;

TBL_ID                       NUMBER
PKEY_COMMENT                 VARCHAR2(4000)
PKEY_NAME                    VARCHAR2(128)
PKEY_TYPE                    VARCHAR2(767)
INTEGER_IDX                  NUMBER(10)
SQL> select * from partition_keys;
因此,如果在配置单元中“创建由(…)分区的表xxx(…”,则配置单元分区数据将存储到metastore(Oracle、MySQL…)数据库中

例如,在配置单元中,如果创建如下表:

hive> create table employee_table (id bigint, name string) partitioned by (region string);
您可以在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
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

将数据插入employee_表时,数据将存储在Hadoop DataNodes上的HDFS中,NameNode将跟踪哪些DataNodes具有数据。

NameNode将跟踪文件系统中所有文件的目录树,并跟踪文件数据在集群中的保存位置。它还通过心跳机制跟踪所有数据节点(死+活)。它还通过接收客户机的请求并将其重定向到适当的数据节点来帮助客户机进行读/写操作

metastore存储的元数据包含以下内容:

数据库ID

表的ID

索引ID

创建索引的时间

创建表的时间

分配给特定用户的角色ID

用于表格的InputFormat

OutputFormat用于表格等

这是你想知道的吗

而且集群本身中不一定要有元存储。任何具有JDBC兼容数据库的机器(集群内或集群外)都可以用于metastore


附言:您可能会发现metastore的功能非常有用。

metastore-它是一个存储元数据的数据库,也就是您在配置单元中创建的表的所有详细信息。默认情况下,配置单元附带并使用Derby数据库。但您可以使用任何其他数据库,如MySQL或Oracle

Metastore的使用:无论何时从配置单元CLI启动查询,执行引擎都会收集有关表的所有详细信息,并创建执行计划(作业)。这些细节来自Metastore。最后,执行引擎将作业发送到Hadoop。从这里开始,执行常见的Hadoop Map Reduce作业,并将结果发送回配置单元。名称节点与执行引擎通信以成功执行MR作业


上图是理解Hive和hadoop通信的绝佳图

关于配置单元元存储(不是hadoop-Metastore):

  • 在hadoop环境中没有必要/强制使用metastore,因为只有在HDFS集群上使用HIVE时才需要它

  • Metastore是仅用于配置单元的元数据存储库,配置单元使用它仅存储创建的数据库对象的元数据信息(不是实际数据,它已存在于HDFS中,因为配置单元不存储数据。配置单元使用文件系统中已存储的数据)

  • 配置单元实现需要使用任何RDBMS的元存储服务

  • 关于Namenode(hadoop-Namenode):

  • Hadoop的核心部分,其行为类似于集群的元存储

  • 不是RDBMS。仅在文件系统中存储文件系统元信息


  • 我很抱歉。。。我还是不清楚。。。。那么,我们在配置单元中创建的每个表,其表结构/模式都将保存在元存储中?那么元数据中存储的元数据是什么呢。。Metastore中存在哪些元数据?@DrewRose,如果我理解正确,元数据(DDL=create/drop/rename tables等)存储在Metastore中;数据存储在HDFS中。是的,它是数据的元数据。但此DDL类型元数据与namenode存储的元数据不同。谢谢!尽管据我所知,HDFS只是底层数据可以驻留的许多地方之一。Hive metastore支持三个执行后端:Spark、Tez和MapReduce,Spark可以使用各种文件系统和数据源,甚至可以通过其对弹性分布式数据集(RDD)的酷炫新抽象主要或完全从内存中工作,因此基本上。。元存储将不知道数据在HDFS中的何处。它将使用表或索引的ID并在namenode中搜索,namenode将告诉哪个块有数据。我说得对吗?不,不。这是给投票人的。当人们在没有说明原因的情况下投票否决问题/答案时,我总是觉得很奇怪。无论如何,这对我没有帮助。如果有人真的觉得不正确,他/她应该让用户知道,有趣的是,metastore将执行什么hdfs函数来定位表或文件indexes@voipp配置单元
    metastore
    是存储在HDFS中的
    NameNode
    上,还是存储在MySQL、Oracle等中安装配置单元的计算机上。?因为当您将配置单元下载到计算机上时,它包含驱动程序、编译器、执行引擎和
    元存储
    。最初,
    MetaStore
    将不包含任何内容,但当您创建表时,
    MetaStore
    将获取有关查询转换为Map Reduce作业后数据存储在HDFS中的位置的信息,并且数据存储在HDFS中是否正确?