hiveserver2 HA

背景介绍:

  大家好,昨日离线集群很多租户包括自己团队反应hive提交任务会卡住,或则几乎登录不上去,我看了一下yarn的资源,资源基本上是空闲的,几乎没有用的,根据我的经验,我猜测可能是hiveserver2服务出问题了,于是直接使用cli(hive命令),试了一下,没问题,此时虽然还没有看日志,但是已经想到hiveserver2服务出问题了,由于是生产环境,没有想太多,赶快重启了hiveserver2服务,然后开始想怎么实现HA高可用,查了一下资料,大概心里有点底了!下面开始介绍hiveserver2 HA

架构原理介绍:

hiveserver2 HA_第1张图片

上图是一个简单的架构图,表示一下思路,接下来让我们看一下上图

这里最主要的是利用了zk的命名空间,首先我们把两个hiserver2先后启动,注册到zk集群的,然后通过zk轮询做高可用,就是这么简单,下边详细讲解一下,安装配置

第一步 在两台节点上安装hive,除了配置的ip不同,其他的都相同,并在hive-site.xml中添加如下配置



hive.server2.support.dynamic.service.discovery
true




hive.zookeeper.quorum
node5:2181,node4:2181,node3:2181




hive.server2.thrift.bind.host
0.0.0.0

然后保存文件

第二步

启动分别启动两个hiveserver2服务,确认端口是否监听 netstat -lnp | grep 10000 ,默认端口是10000

第三步

查看zk集群是否有了配置文件中的命名空间,确认有了以后

第四步

发起请求,命令如下

beeline -u "jdbc:hive2://node5:2181,node4:2181,node3:2181/ding;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk" -nhadoop -phadoop123$

beeline -u就不解释了

node5:2181,node4:2181,node3:2181 表示zk集群的连接信息

ding 表示要连接的hive库

serviceDiscoveryMode=zooKeeper 表示指定hiveserver连接模式为zookeeper连接

zooKeeperNamespace=hiveserver2_zk指定配置文件中的命名空间

 -nhadoop 表示当前用户用hadoop用户连接beeline

-phadoop123$ 表示当前用户的密码(这里beeline的权限认证使用的是自定义的权限控制)

然后进入客户端进新房操作

第五部 我们杀了了其中一个hiveserver2,比如hiveserver2-1,然后还可以请求,多次测试可以使用

ok,到这里就介绍完了,特别简单,但是这里还有个问题,目前还不知道怎么解决,如果客户端连接成功,正在执行sql语句的时候,突然客户端连接的hiveserver2挂了,那么正在执行的sql就会终止,目前还没有好的解决思路!










你可能感兴趣的:(hiveserver2 HA)