前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Zookeeper实现HiveServer2的HA

如何使用Zookeeper实现HiveServer2的HA

作者头像
Fayson
修改2018-04-01 19:34:07
6K2
修改2018-04-01 19:34:07
举报
文章被收录于专栏:Hadoop实操

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

1.文档编写目的


之前Fayson介绍了《如何使用HAProxy实现HiveServer2负载均衡》,这种方案也有一些弊端,如HAProxy本身就是单点,虽然可以通过Keepalived来实现HAProxy的高可用,但这样配置会比较麻烦并且需要多部署两个组件,增大了系统运维的复杂度。在大数据平台中Zookeeper是一个必不可少且自身具有高可用保证的组件,本文主要讲述如何使用Zookeeper实现HiveServer2的HA。

  • 内容概述

1.配置HiveServer2与Zookeeper集成

2.Beeline测试

  • 测试环境

1.CM和CDH版本为5.13.0

2.采用root用户操作

3.集群未启用Kerberos

  • 前置条件

1.Hive版本必须高于0.14(含0.14)

2.修改Hive配置


1.登录CM,进入Hive服务,在HiveServer2中增加如下配置

代码语言:txt
复制
<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>ip-172-31-10-118.fayson.com:2181,ip-172-31-5-190.fayson.com:2181,ip-172-31-6-148.fayson.com:2181</value>
</property>
<property>
    <name>hive.zookeeper.client.port</name>
    <value>2181</value>
</property>

保存配置,回到CM主页根据提示重启服务。

2.修改完配置,可以通过zookeeper-client命令查看,HiveServer2已在Zookeeper注册成功

代码语言:txt
复制
[root@ip-172-31-6-148 ~]# zookeeper-client 
[zk: localhost:2181(CONNECTED) 0] ls /
[hiveserver2_zk, hive_zookeeper_namespace_hive, hbase, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /hiveserver2_zk
[serverUri=ip-172-31-6-148.fayson.com:10000;version=1.1.0-cdh5.13.0;sequence=0000000006, serverUri=ip-172-31-5-190.fayson.com:10000;version=1.1.0-cdh5.13.0;sequence=0000000005]
[zk: localhost:2181(CONNECTED) 25] 

通过上面截图可以看到两个HiveServer2的服务都注册到了Zookeeper。

3.Beeline测试


HiveServer2注册Zookeeper后,JDBC连接的URL格式为:

代码语言:txt
复制
jdbc:hive2://<zookeeper quorum>/<dbName>;ServiceDiscoveryMode=zookeeper;zooKeeperNameSpace=hiveserver2

参数说明:

<zookeeper quorum>:为Zookeeper的集群链接串,如ip-172-31-10-118.fayson.com:2181,ip-172-31-5-190.fayson.com:2181,ip-172-31-6-148.fayson.com:2181

<dbName>:Hive的数据库,默认为default

serviceDiscoveryMode:指定模式为zooKeeper

zooKeeperNamespace:指定ZK中的nameSpace,即参数hive.server2.zookeeper.namespace所定义

具体可以参考官网:https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-ConnectionURLWhenZooKeeperServiceDiscoveryIsEnabled

1.使用Beeline连接HiveServer2服务

代码语言:txt
复制
[root@ip-172-31-6-148 ~]# beeline 
beeline> !connect jdbc:hive2://ip-172-31-10-118.fayson.com:2181,ip-172-31-5-190.fayson.com:2181,ip-172-31-6-148.fayson.com:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk
.... 
17/11/10 08:23:26 [main]: INFO jdbc.HiveConnection: Connected to ip-172-31-6-148.fayson.com:10000
...
0: jdbc:hive2://ip-172-31-10-118.fayson.com:2> select * from test;
...
INFO  : OK
+----------+----------+--+
| test.s1  | test.s2  |
+----------+----------+--+
| 11       | 222      |
+----------+----------+--+
1 row selected (3.516 seconds)
0: jdbc:hive2://ip-172-31-10-118.fayson.com:2>

通过上图标注可以看到通过Beeline连接到的是ip-172-31-6-148.fayson.com的HiveServer2服务,这时我们停止ip-172-31-6-148.fayson.com的服务,再次连接。

2.停止ip-172-31-6-148.fayson.com的HivServer2服务

3.使用Beeline再次连接

代码语言:txt
复制
[root@ip-172-31-6-148 ~]# beeline 
beeline> !connect jdbc:hive2://ip-172-31-10-118.fayson.com:2181,ip-172-31-5-190.fayson.com:2181,ip-172-31-6-148.fayson.com:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk
...
17/11/10 08:34:27 [main]: INFO jdbc.HiveConnection: Connected to ip-172-31-5-190.fayson.com:10000
0: jdbc:hive2://ip-172-31-10-118.fayson.com:2> select * from test;
+----------+----------+--+
| test.s1  | test.s2  |
+----------+----------+--+
| 11       | 222      |
+----------+----------+--+
1 row selected (2.103 seconds)
0: jdbc:hive2://ip-172-31-10-118.fayson.com:2> 

可以看到在ip-172-31-6-148.fayson.com节点上的HiveServer2服务停止后,再次连接时自动指向了ip-172-31-5-190.fayson.com节点上的HiveServer2。

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档