Zookeeper 错误HBASE-ZOOKEPER:连接太多

tquggr8v  于 2023-03-06  发布在  Apache
关注(0)|答案(3)|浏览(381)

我正在为我的应用程序使用Hbase-Hadoop组合,沿着使用Data Nucleus作为ORM。
当我试图同时通过多个线程访问Hbase时,它抛出异常:

Exception in thread "Thread-26" javax.jdo.JDODataStoreException

org.apache.hadoop.hbase.ZooKeeperConnectionException: HBase is able to connect to ZooKeeper but the connection closes immediately. This could be a sign that the server has too many connections (30 is the default). Consider inspecting your ZK server logs for that error and then make sure you are reusing HBaseConfiguration as often as you can. See HTable's javadoc for more information.

Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase

我该如何处理这种情况?是否需要进行任何配置来增加连接池?

z9smfwbn

z9smfwbn1#

Zookeeper服务器有一个活动连接数限制,默认为30。您需要在zookeeper配置文件zoo.cfg中相应地设置maxClientCnxns属性来增加此限制。
对于100个连接:

maxClientCnxns=100

告诉zookeeper对连接数没有限制:

maxClientCnxns=0
xwmevbvl

xwmevbvl2#

我不建议盲目地转储最大连接数,根据ZK文档,此配置不是到ZK的最大连接数,而是每个客户端到ZK的最大并发连接数:
maxClientCnxns(无Java系统属性)
限制单个客户端(由IP地址标识)可以与ZooKeeper集成的单个成员进行的并发连接(在套接字级别)的数量。这用于防止某些类别的DoS攻击,包括文件描述符耗尽。将此设置为0或完全忽略它将取消对并发连接的限制。
因此,你必须有超过30个从相同IP地址到ZK的并发连接。2在这种情况下,使用netstat来调试那个IP是什么,并且检查什么可以同时初始化那些连接。

mrphzbgm

mrphzbgm3#

针对以上问题,需要重新启动HBase的主服务,命令为

sudo /etc/init.d/hadoop-hbase-master start

这需要在进入HBase shell之前完成。

相关问题