解决客户端通过zookeeper连接到hbase时连接过多的问题

 

2015年04月24日 16:54:57 a_lele123 阅读数:2434

原因:客户端程序通过zookeeper访问hbase的连接数超过设置的默认链接数(默认数是30),连接数不够用会导致后续的连接连接不上去。
解决办法:设置hbase-site.xml配置文件,添加如下属性

 
  1. <property>

  2. <name>hbase.zookeeper.property.maxClientCnxns</name>

  3. <value>300</value>

  4. <description>Property from ZooKeeper's config zoo.cfg.

  5. Limit on number of concurrent connections (at the socket level) that a

  6. single client, identified by IP address, may make to a single member of

  7. the ZooKeeper ensemble. Set high to avoid zk connection issues running

  8. standalone and pseudo-distributed.

  9. </description>

  10. </property>

将最大连接数我这设置成了300,后来发现仍然提示同样的问题,最大连接数并没有起作用,根据属性提示,直接修改zoo.cfg配置文件
添加:maxClientCnxns=300
重启下zookeeper,hbase,重新测试,问题解决。

### HBase Shell 连接 ZooKeeper 断开的原因 HBase Shell连接ZooKeeper一段间后断开可能由多个因素引起。通常情况下,这涉及到会话超设置不当、网络不稳定或资源竞争等问题。 #### 1. 会话超设置不合理 在ZooKeeper中,当客户端和服务端建立连接之后,二者间保持的是一个长间存在的连接关系。此期间内,只要不超过设定的间间隔`SESSION_TIMEOUT`,服务端就会认为该连接处于活跃状态[^4]。然而,默认的超间对于某些应用场景来说可能是过短的,尤其是在高延迟环境中工作,容易触发不必要的重新选举过程,进而导致短暂性的连接中断现象发生。 #### 2. 网络波动影响 即使是在相对稳定的局域网环境下,偶尔也会遇到瞬态的网络抖动情况,这些都会造成心跳包丢失,最终使得ZooKeeper判定某一方已经离线并关闭其对应的TCP链接。一旦这种情况频繁出现,则意味着存在潜在的基础架构层面的问题需要排查解决。 #### 3. 资源争用引发的服务降级 随着业务负载的增长,特别是读写请求量激增的情况下,可能会因为CPU过高或者内存不足等原因而导致响应速度变慢甚至停止回应来自其他组件的心跳检测信号,从而间接造成了看似无故发生的掉线事故[^1]。 --- ### 解决方案建议 针对上述提到的各种可能性,可以采取如下措施来优化系统的稳定性和可靠性: #### 1. 增大session timeout参数值 适当增加`zookeeper.session.timeout.ms`配置项下的数值可以帮助缓解由于轻微延所带来的负面影响;同也要注意调整相应的`hbase.client.pause`和`hbase.rpc.timeout`等相关属性以确保整体协调一致。 ```properties # hbase-site.xml 中的相关配置示例 <property> <name>zookeeper.session.timeout.ms</name> <value>60000</value><!-- 单位毫秒 --> </property> <property> <name>hbase.client.pause</name> <value>1000</value> </property> <property> <name>hbase.rpc.timeout</name> <value>90000</value> </property> ``` #### 2. 减少重试次数与频率 通过降低`zookeeper.recovery.retry`以及关联的`hbase.client.retries.number`这两个选项里的具体数目,可以在一定程度上减少因重复尝试恢复而消耗过多间和计算资源的情况发生[^2]。 ```properties # hbase-site.xml 中的相关配置示例 <property> <name>zookeeper.recovery.retry</name> <value>3</value> </property> <property> <name>hbase.client.retries.number</name> <value>5</value> </property> ``` #### 3. 加强硬件设施维护保养 定期检查物理服务器的工作状况,及清理散热装置内的灰尘颗粒物,更换老化损坏的关键配件,以此保障良好的运行条件,防止因温度过高或其他电气特性异常引起的性能下降问题[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值