一、Hive元数据的概念及存储方式
(1)元数据是描述真实数据的数据,包括Hive表的数据库名、表名、字段名与类型等
(2)Hive元数据存储在RDBMS中,有三种存储模式:
单用户模式,使用内置Derby数据库
多用户模式,使用本地MySQL数据库
远程服务模式,使用远程元数据服务访问数据库
二、单用户模式存储
(1)元数据存储在Derby数据库,是默认的存储方式
(2)单用户存储模式的优缺点:
优点:Derby小巧易用,安装方便
缺点:在同一数据库目录下只能有一个Hive客户端使用,无法实现元数据共享
(3)单用户存储模式适合在测试环境中使用
三、多用户模式存储
(1)元数据存储在MySQL数据库,是开发中经常使用的存储模式
(2)多用户模式存储的配置
四、远程服务模式存储
(1)单独开启metastore服务,通过metastore服务访问元数据库(如MySQL)
(2)配置启动远程服务模式存储
五、Hive主要元数据表介绍
元数据表名(MySQL hive数据库中) | 说明 |
VERSION | 存储Hive版本 |
DBS、DATABASE、PAPAMS | 存储与Hive数据库相关信息 |
TBLS、TABLE_PAPAMS、TBL_PRIVS | 存储Hive表相关信息 |
SDS、SD_PARAMS、SERDES、SERDES_PARAMS | 存储Hive文件存储相关信息 |
PAPTITIONS、PATITION_KEYS、PARTITION_KEY_VALS、PARTITON_PARAMS | 存储分区相关信息 |
COLUMNS_V2 | 存储表对应的字段信息 |
CDS | 记录Columns_v2中所有的CD_ID |
DB_PRIVS | 数据库权限信息表 |
IDXS | 索引表 |
TBL_COL_STATS | 表字段统计信息 |
(1) VERSION表
包括主键ID、Hive版本及版本说明
有且只有一条数据
(2) DBS表
元数据表字段 | 说明 | 示例数据 |
DB_ID | 数据库ID | 26 |
DESC | 数据库描述 | 雇员数据库 |
DB_LOCATION_URL | 数据库HDFS路径 | hdfs://cluster1/home/....../empdb.db |
NAME | 数据库名 | empdb |
OWNER_TYPE | 所有者类型 | USER |
OWNER_NAME | 数据库所有者 | root |
(3) DATABASE_PARAMS表
存储数据库的相关参数
元数据表字段 | 说明 | 示例数据 |
DB_ID | 数据库ID | 26 |
PARAM_KEY | 参数名 | createdby |
PARAM_VALUE | 参数值 | root |
(4) TABLE_PARAMS表
存储表/视图的额外属性信息
元数据表字段 | 说明 | 示例数据 |
TBL_ID | 表ID | 694 |
PARAM_KEY | 参数名 | transient_lastDdlTime |
PARAM_VALUE | 参数值 | 1544065674 |
(5) TBLS_PRIVS表
存储Hive表/视图的授权信息
元数据表字段 | 说明 | 示例数据 |
TBL_GRANT_ID | 授权ID | 1 |
CREATE_TIME | 授权时间 | 1544065674 |
GRANT_POTION | 被授权者可授权给其他用户 | 0 |
GRANTOR | 授权执行用户 | root |
GRANTOR_TYPE | 授权者类型 | USER |
GRANTOR_NAME | 被授权用户 | username |
PRINCIPAL_TYPE | 被授权用户类型 | USER |
TBL_PRIV | 权限 | select、alter |
TBL_ID | 表ID | 694 |
(6) PARTITIONS表
存储表分区的基本信息
元数据表字段 | 说明 | 示例数据 |
PART_ID | 分区ID | 1 |
CREATE_TIME | 分区创建时间 | 1544065674 |
LAST_ACCESS_TIME | 最后一次访问时间 | 0 |
PART_NAME | 分区名 | year=2018 |
SD_ID | 分区存储信息ID | 696 |
TBL_ID | 表ID | 695 |