如何使用Zookeeper实现HiveServer2的HA
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
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中增加如下配置
<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注册成功
[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格式为:
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所定义
1.使用Beeline连接HiveServer2服务
[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再次连接
[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。
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
- 特性分支与特性开关哪家强?
- Android快速开发框架 roboguice
- 悄悄的干活,打枪的不要!勒索+比特币挖矿木马
- 拥有可移动头像的折叠Android工具栏:CollapsingAvatarToolbar
- Android平台下的第一个Tor木马
- 利用代码实现自定义圆角+阴影按钮 android-flat-button
- 周末阅读:程序员的《权利法案》
- 对利用Adobe 0day – CVE-2014-0502进行攻击的行为分析
- Android系统更改状态栏字体颜色
- Android实现竖着的滑动刻度尺效果,选择身高(竖向的)
- DedeCMS全版本通杀SQL注入漏洞利用代码及工具
- Android实现滑动刻度尺效果,选择身高体重和生日
- 浅谈开源web程序后台的安全性
- Web漏洞演练平台 – ZVulDrill
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法