hive metastore ha 配置

hive metastore 配置多台,可以避免单节点故障导致整个集群的hive client不可用。同时hive client配置多个merastore地址,会自动选择可用节点。

metastore单独配置

metastore 的配置单独拿出来,这样不容易让别人看到连接数据库的信息。

1
2
3
4
5
[root@cd-client00 conf]# echo $HIVE_HOME
/home/hadoop/apache-hadoop/hive

mkdir -p /home/hadoop/apache-hadoop/hive/hive-metestore/conf
chmod 700 /home/hadoop/apache-hadoop/hive/hive-metestore/conf

这个目录的权限你可以设置为 700 ,只有自己的帐号可以看到。 其他的hive client也不需要这个目录的配置。

vim /home/hadoop/apache-hadoop/hive/hive-metestore/conf/hive-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://mysql-master.inc-shining.com:8806/hive_meta?zeroDateTimeBehavior=convertToNull&amp;characterEncoding=UTF-8</value>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive_user</value>
<description>Username to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive_password</value>
<description>password to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
</configuration>

启动 hive metastore

正常启动 metastore 的话会到 $HIVE_HOME/conf下找配置文件,我们这里已经将这个配置改目录了,所以我写了一个脚本启动。

1
2
3
4
5
6
7
vim hive-meta-start.sh

#!/bin/bash
export HIVE_CONF_DIR=/home/hadoop/apache-hadoop/hive/hive-metastore/conf
nohup hive --service metastore > /home/hadoop/apache-hadoop/hive/hive-logs/metastore.log 2>&1 &
echo $! > /home/hadoop/apache-hadoop/hive/hive-logs/metastore.pid
unset HIVE_CONF_DIR

多台 hive metastoe 机器都是这么配置启动,即可。

hive client 配置

hive client的配置中就不需要存在连接mysql的信息配置。

vim $HIVE_HOME/conf/hive-site.xml

1
2
3
4
5
<property>
<name>hive.metastore.uris</name>
<value>thrift://meta-1.sukbeta.com:9083,thrift://meta-2.sukbeta.com:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>

这样就配置完成了,client端就可以直接用hive了,

  • 这样启动hive的时候,本地client端就无需实例化hive的metastore,启动速度会加快。

如果你感觉文章还可以的话,请帮点点下面的广告! 谢谢!

感谢您的支持!