数据仓库学习笔记五

1. Hive元数据

1.1 Hive元数据的概念级存储方式

Hive中有两类数据:真实数据和元数据。和关系型数据库一一样, 元数据可以看作是描述数据的数据,包括Hive表的数据库名、表名、字段名称与类型、分区字段与类型等。

Hive将元数据存储在RDBMS中,有以下3种模式可以连接到数据库。

Single User Mode:单用户模式,使用内置Derby数据库,也称内嵌Derby模式。

Multi User Mode:多用户模式,使用本地MySQL数据库,也称本地模式。

Remote Server Mode: 远程服务模式,使用远程元数据服务访问数据库,也称远程模式。

按元数据存储位置划分,单用户与多用户模式均属于本地存储,远程服务模式属于远端存储。无论使用哪种模式,Hive客户端均须首先连接metastore服务,然后由metastore服务去访问数据库以完成元数据的存取。

①. Single User Mode

防认情况下. Hive使用Detry内存数据库保存元数果优点是Doby小巧易周安装非常方便。

使用Derty存储方式时,运行Hive Shel会在当前目录生成个drig文件和一个metstor_db目录,用于

保存一些HQL 操作结果。这种存储方式的弊端是:

在同一个目录下同 时刻只能有一个 Hive客户端使用数据库:

切换目录重新启动Hive Shell后,之前保存的元数据将无法被查看,即无法实现元数据共享。

鉴于上述弊端,我们将该模式称为单用户模式,一般在测试环境时使用(用于测试Hive环境)。在该

模式下无须进行特别配置即可使用,但须注意默认的仓库地址( hive.metastore.warehouse.dir)为

“/user/hive/warehouse”。

在单用户模式下Hive服务、metastore服务、Derby 数据库运行在同一进程中。

②.  Multi User Mode

将元数据存储介质更换为MySQL,即为多用户模式,这是开发中经常使用的模式。这种模式需要单

独运行一个 MySQL服务,并作如下配置 (需要将MySOL的JDBC 驱动jar文件拷贝到

$HIVE_ HOME/lib 目录下)。

③.   Remote Server Mode

本地模式下,每个客户端可启动多个Hive副本,每个Hive都内置一个 metastore服务,这样明显会

浪费资源。所以可单独启动一个metastore 服务,所有客户端使用Thrift协议通过该服务访问元数据

库( 如MySQL),此模式称为远程模式。启动命令如下:

$ hive --service metastore -P 9083

其中“-p”用于指定监听端口,默认端口为9083。

对metastore服务端来说,仍须指定MySQL连接信息以完成对MySQL的访问。检查元数据服务是否

启动成功的命令如下:

$ netstat -anplgrep 9083

9083端口处于正常监听状态即可。

对metastore客户端来说,其无须再配置MySQL连接信息,指定metastore 服务地址即可(主要是在

hive-site.xm中配置hive metastoreuris)。这是一个类似 URL的链接地址,用于通过thrift 前缀连接

metastore. thrift 前缀的格式为: thif:/METASTORE-HOST:PORT,如果有多个metastore服务,须使

用逗号将它们分隔。例如:

<property>

< name> >hive.metastore.uris</name>

<value> thrift://192.168.9.80:9083,thrift://192.168.9.80:9084</value>

</property>

在远程模式下,Hive 服务和metastore服务可以在不同的进程中,也可以在不同的主机中,这样便

可使-者解耦。所以在生产环境中,推荐使用远程模式访问元数据库。
 

2. 元数据查询

2.1 元数据表

主要的元数据表介绍如下。

VERSION: 存储Hive版本。

DBS、DATABASE PARAMS:存储Hive数据库相关信息。

TBLS、 TABLE PARAMS、TBL PRIVS:存储Hive表相关信息。

SDS、SD PARAMS、SERDES、SERDE_ PARAMS:存储Hive文件存储相关信息。

PARTITIONS、PARTITION KEYS、PARTITION KEY_ VALS、PRTITION_PARAMS:存储分区相

关信息。

COLUMNS_ V2:存储表对应的字段信息。

其他不常用的元数据表介绍如下。

CDS: 记录COLUMN V2中的所有CD_ ID。

DB_ PRIVS: 数据库权限信息表。

IDXS: 索引表。

INDEX PARAMS:索引相关属性信息。

TBL_ COL_ STATS:表字段统计信息。

TBL COL PRIVS: 表字段授权信息。

PART PRIVS:分区授权信息。

PART COL PRIVS:分区字段授权信息。

PART COL STATS:分区字段的统计信息。

FUNCS:用户注册函数。

FUNC RU;用户注册函数的资源信息。
 

2.2 数据库元数据

(1) DBS:

DBS表存储Hive中所有数据库的基本信息。元数据表DBS字段说明如表3-2所示。

(2) DATABASE PARAMS:

DATABASE PARAMS表存储数据库的相关参数,这些参数是在创建表时由“CREATE DATABASE..的子句“WITH DBPROPERTIES(property name=property_value...)”指定的。例如:

create dabase testdb with dbproperties'('createdby'-'hive')

其中,DBS和元数据表DATABASE PARAMS通过DB ID字段关联。
 

2.3 表元数据

TBLS、TABLE PARAMS和TBL PRIVS表通过TBL ID进行关联。

(1) TBLS:

元数据表TBLS中存储Hive表的基本信息,包括内部表、外部表、索引表与视图。
 

(2) TABLE PARAMS:

TABLE PARAMS表存储表视图的额外属性信息,由建表语句的子句“

TBL PROPERTIES(property_ name= property_ val)”指定。

(3) TBL PRIVS:

TBL PRIVS表存储表/视图的授权信息。

2.4 表数据存储元数据

创建Hive表时可以指定各种文件的格式。Hive 将HQL解析成MapReduce时,须知道去哪里、使用

哪种格式读写HDFS文件,而这些信息就保存在这几张表中。

(1) SDS:

SDS表保存文件存储的基本信息,如INPUT FORMAT、OUTPUT FORMAT、是否压缩等。TBLS

表中的SD_ ID与该表关亥表关联,可以通过SD _ID获取该表中保存的存储信息。

(2) SD_ PARAMS:

SD_ PARAMS表存储Hive存储的额外属性信息,其详细结构如表3-8所示

(3) SERDES:

SERDES表存储序列化使用的类信息,在创建表时由子句

“ROW FORMAT SERDE'org. apache hadoop hive. sede.axzy.LazySimpleSerdle”指定。

(4) SERDE PARAMS:

SERDB PARAMS表存储序列化的属性和格式信息,如行、列分隔符等,这些信息会在创建表时由

“ROW FORMAT SERDE '……' WITHSERDEPROPERTIES(propertyname propery val)" 指定。

2.5 表分区元数据

存储表分区相关信息的元数据表主要有PARTITIONS、 PARTITION KEYS、

PARTITION KEY _VALS和PARTITION PARAMS。

(1) PARTITIONS:

PARTITIONS表存储表分区的基本信息。

(2) PARTITION KEYS:

PARTITION_ KEYS表存储分区的字段信息。

(3) PARTITION KEY_ VALS:

PARTITION_ KEY _VALS表存储分区字段值。

(4) PARTITION_ PARAMS:

PARTITION PARAMS表存储分区的属性信息。

2.6 表字段元数据

COLUMNS_ V2表存储表对应的字段信息。


 

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值