hiveserver2 的HA 配置

本文详细介绍了HiveServer2高可用(HA)配置流程,包括如何利用Zookeeper实现服务发现,具体参数配置,以及如何启动和连接多个HiveServer2实例,达到负载均衡和提高可用性的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、作用

如果只是使用一台服务来启动hiveserver2,那么如果hiveserver2挂掉便不能提供jdbc的支持。hive 支持hiveserver2 HA,用于进行负载均衡和高可用
Hive从0.14开始,使用Zookeeper实现了HiveServer2的HA功能,Client端可以通过指定一个nameSpace来连接HiveServer2,而不是指定某一个host和port。

2、具体配置

具体配置如下 (在hive-site.xml中或者hiveserver2-site.xml 进行配置,这里注意 如果你在hiveserver2-site.xml 和hive-site.xml 均配置了一个参数,hiveserver2-site.xml将会覆盖hive-site.xml中的参数)

<property>
<name>hive.server2.support.dynamic.service.discovery</name>
<value>true</value>  //设置为true(默认为false),以便为其客户端启用HiveServer2动态服务发现
</property>
 
<property>
<name>hive.server2.zookeeper.namespace</name>
<value>hiveserver2_zk</value>   //这个是在zookeeper的目录(存储hiverserver2多个服务的信息)
</property>
 
<property>
<name>hive.zookeeper.quorum</name>
<value>shujuyun01:2181,shujuyun02:2181,shujuyun03:2181</value>
</property>
 
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
 
 
<property>
<name>hive.server2.thrift.bind.host</name>
<value>0.0.0.0</value>
</property>
 
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value> //两个HiveServer2实例的端口号要一致
</property>

3、启动

启动一个服务的hiverserver2

nohup hive --service hiveserver2 > /opt/beh/logs/hive/hiveserver2.log 2>&1 &

查看日志和端口,是否正常启动,启动正常进入zookeeper Cli,查看在hiveserver2_zk 下面右面有相关节点的信息,

[zk: shujuyun01-cuidong:2188(CONNECTED) 2] ls /hiveserver2_zk
[serverUri=shujuyun02-cuidong.novalocal:10000;version=2.3.3;sequence=0000000014]

再启动另外一个hiveserver2,启动成功发现 (多了一个hiveserver2的注册信息)

[zk: shujuyun01-cuidong:2188(CONNECTED) 2] ls /hiveserver2_zk
[serverUri=shujuyun02-cuidong.novalocal:10000;version=2.3.3;sequence=0000000014, serverUri=shujuyun01-cuidong.novalocal:10000;version=2.3.3;sequence=0000000017]

由此可以发现
其实就是将多个hiveserver2的服务信息注册到zookeeper,然后当请求来的时候轮询获取url信息,来达到高可用和负载均衡的效果。

4、连接

编写JDBC url 尝试使用beeline 访问

/opt/beh/core/hive/bin/beeline -u “jdbc:hive2://shujuyun01-cuidong:2188,shujuyun02-cuidong:2188,shujuyun03-cuidong:2188/zgh;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk”

<think>好的,我需要解决用户关于在CDH中配置Hive高可用后,如何让HUE支持HiveServer2高可用的问题。首先,我需要回顾一下Hive高可用的基本配置,通常这涉及到多个HiveServer2实例和ZooKeeper来实现故障转移。用户已经完成了Hive高可用配置,现在需要调整HUE设置来支持这一点。 接下来,我应该考虑HUE连接HiveServer2的方式。通常,HUE会直接连接到一个HiveServer2的主机名和端口。但在高可用环境下,应该通过ZooKeeper的服务发现机制来动态获取可用的HiveServer2实例。因此,HUE配置需要从单节点地址改为使用ZooKeeper的集合地址。 然后,我需要确认HUE配置文件中相关的参数。CDH中HUE配置通常通过Cloudera Manager管理,可能需要修改hue_safety_valve.ini或者直接编辑hue.ini文件。关键点是将HiveServer2连接URL从直接的主机:端口改为ZooKeeper的命名空间,例如jdbc:hive2://zk1:2181,zk2:2181,zk3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2。 另外,可能需要设置负载均衡或故障转移的参数,比如连接超时和重试机制,确保HUE能够正确处理连接失败的情况。还要注意HiveServer2的Kerberos认证配置,如果启用了安全认证,HUE配置中需要包含相应的principal和keytab信息。 此外,可能需要检查HUEHiveServer2之间的版本兼容性,确保使用的JDBC驱动支持高可用配置。如果有必要,更新HUE的lib目录下的Hive JDBC驱动版本。 最后,配置完成后需要重启HUE服务,并进行测试,验证HUE能否通过ZooKeeper正确连接HiveServer2集群,并且在某个节点故障时能够自动切换到其他可用节点。</think>以下是配置HUE支持HiveServer2 HA的步骤: ### 核心配置步骤 1. **修改Hue服务配置** ```ini [beeswax] # 原始单节点配置(需注释) # hive_server_host=hs2-host1 # hive_server_port=10000 # 启用ZooKeeper服务发现 hive_server2_jdbc_url=jdbc:hive2://zk1:2181,zk2:2181,zk3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 ``` 2. **添加ZooKeeper参数**(可选增强配置) ```ini # 设置连接超时为120秒 hive_server2_session_connection_timeout=120 # 启用连接池保持会话 hive_server2_conn_pool=True ``` 3. **安全认证配置**(如启用Kerberos) ```ini [security] # 配置Kerberos认证信息 kerberos_hive_principal=hive/_HOST@YOUR-REALM.COM kerberos_keytab=/etc/hue/keytabs/hue.service.keytab ``` ### 配置验证流程 1. 通过Cloudera Manager分发配置 2. 重启Hue服务 3. 检查日志确认连接状态: ```bash tail -f /var/log/hue/hue_server.log | grep 'HiveServer2' ``` 4. 执行双重验证测试: - 正常查询验证 - 手动停止当前连接的HS2节点,验证自动切换 ### 注意事项 1. **ZooKeeper命名空间**需与HiveServer2 HA配置的`hive.server2.zookeeper.namespace`一致 2. **网络策略**确保Hue服务器能访问所有ZooKeeper节点 3. **负载均衡**建议配合Haproxy实现更均衡的连接分配 ### 故障排查要点 1. 使用zkCli.sh验证服务注册状态: ```bash ls /hiveserver2 get /hiveserver2/serverUri=host1:port ``` 2. JDBC驱动版本需与CDH版本匹配 3. 检查SASL/GSSAPI协商日志(如果启用Kerberos) 完成配置后,Hue即可通过ZooKeeper自动发现可用的HiveServer2节点,实现高可用访问。建议在配置变更后通过不同HS2节点执行查询,观察连接切换是否正常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值