Hive体系结构的元数据(Metastore)是一个重要的组件,保存了Hive有关库、表、存储、分区等信息。元数据主要包括两个方面:一方面是元数据库,最常见的是采用MySQL;另一方面是元数据服务,与其他查询引擎共享,比如Presto或Impala等。

0x00 Hive元数据库

Hive支持两种类型的元数据库:

  • 本地或嵌入的元数据库:Derby
  • 远程的元数据库:MySQL

说明:嵌入的元数据库主要用于单元测试,并且一次只能有一个进程来连接,所以生产环境不推荐使用。实际上,线上使用最多的是采用MySQL作为远程的元数据库。

(1)配置Hive元数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mysql</value>
</property>
</configuration>

(2)元数据库E-R图

Hive Metastore

(3)元数据库的表说明

Hive Metastore Tables

0x01 Hive元数据服务

尽管Hive元数据服务也支持两种方式,可是生产环境采用的是MySQL作为元数据库,所以这里只介绍远程服务的配置与启动。

(1)配置Hive元数据服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>0.0.0.0</value>
</property>
</configuration>

(2)启动Hive元数据服务

1
hive --service hivestore &

参考文献

Metastore Administration
Hive体系结构