Hive的几种部署模式介绍 2015-05-05 22:00

Metastore Database与HiveServer/Metastore Server是否分离式部署

  • 不分离:使用本地/嵌入式数据库

使用Derby作为数据库。Derby是一个类似于Sqlite的本地数据库。数据库Driver在应用程序中。
这种方式一般用于单元测试。 当使用这种方式时,每次只能有一个进程连接到Metastore Database。

关键配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
  • 分离:使用远程数据库

数据库部署在一台独立的服务器上。此时,一般是MySQL、Oracle等传统关系型数据库。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://192.168.1.214:3306/hive_remote?createDatabaseIfNotExist=true</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>password</value>
</property>

HiveServer与Metastore Server是否分离部署

  • 不分离:HiveServer与Metastore Server合一部署

无需特别配置,这是默认配置。

  • 分离:HiveServer与Metastore Server分离部署

HiveServer配置:

1
2
3
4
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://192.168.1.188:9083</value>
</property>

Metastore Server配置:

Metastore Server主要是配置连接后端数据库的信息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://192.168.1.214:3306/hive_remote?createDatabaseIfNotExist=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>test1234</value>
</property>

参考文档

  1. 官方文档MetastoreAdmin
  2. Hive metastore三种配置方式

官方部署模式图(旧版)

Tags: #Hive    Post on Hadoop