Hive 高可用配置与impala高可用
1. HiveServer2高可用及Metastore高可用
使用Zookeeper实现了HiveServer2的HA功能(ZooKeeper Service Discovery),Client端可以通过指定一个nameSpace来连接HiveServer2,而不是指定某一个host和port
Metastore高可用原理:
Hive Metastore客户端始终使用第一个url连接到metastore服务器,如果Metastore服务器变得无法访问,则客户端从列表中随机选取一个url并尝试与之建立连接
在node1和node3上分别启用两个HiveServer2的实例,并通过zookeeper完成HA的配置。
1.1 node01节点修改hive-site.xml配置
<!--配置hiveserver2高可用-->
<property>
<name>hive.server2.support.dynamic.service.discovery</name>
<value>true</value>
</property>
<property>
<name>hive.server2.zookeeper.namespace</name>
<value>hiveserver2_zk</value>
</property>
<property>
<name>hive.zookeeper.quorum</name>
<value> node01:2181,node02:2181,node03:2181</value>
</property>
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node01</value>
</property>
<!--配置metastore高可用-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node01:9083,thrift://node03:9083</value>
</property>
1.2 node03节点同步配置及信息修改
将hive的配置文件scp拷贝到node03节点上,修改node03上的hive-site.xml配置如下:
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node03</value>
</property>
1.3 重启服务
分别重启node01,node03节点上的的hiveServer2和metaStore服务
nohup hive --service hiveserver2 >> ./hiveserver.log 2>&1 &
nohup hive --service metastore >> ./metastore.log 2>&1 &
1.4 在Zookeeper中检查配置
修改完配置后,可通过zookeeper_client命令进行查看,hiveserver2在zookeeper中是否注册成功。
ls /hiveserver2_zk

1.5 测试验证
1.5.1 验证HiveServer2/mestastore是否是高可用
在node01节点上,杀掉占用10000端口的进程,即杀掉node01的hiveServer2进程
[root@node01 ~]$ netstat -ntpl |grep 10000

- node01节点杀死mestastore进程
[root@node01 ~]# ps -ef | grep metastore
kill -9 pid

- node01节点metastore和HiveServer2服务进程全部杀死

- 发现zookeeper自动切换

1.5.2 beeline测试连接
!connect jdbc:hive2://node01:2181,node02:2181,node03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk 用户名 密码
[root@node01 ~]# beeline
beeline> !connect jdbc:hive2

本文详细介绍了如何通过Zookeeper实现HiveServer2和Metastore的高可用性,以及如何在impala中利用Zookeeper进行负载均衡,包括配置步骤、原理和注意事项。

799

被折叠的 条评论
为什么被折叠?



