Hbase客户端ConnectionLoss for / hbase错误

我疯了:

安装好的Hadoop / Hbase都在运行;

/opt/jdk1.6.0_24/bin/jps 23261 ThriftServer 22582 QuorumPeerMain 21969 NameNode 23500 Jps 23021 HRegionServer 22211 TaskTracker 22891 HMaster 22117 SecondaryNameNode 21779 DataNode 22370 Main 22704 JobTracker 

伪分布式环境。

hbase shell

正在运行并提出运行’list’的正确结果;

 hbase shell HBase Shell; enter 'help' for list of supported commands. Type "exit" to leave the HBase Shell Version 0.90.1-cdh3u0, r, Fri Mar 25 16:10:51 PDT 2011 hbase(main):001:0> status 1 servers, 0 dead, 8.0000 average load 

当通过ruby和节俭连接时,一切正常; 我们正在添加数据,它进入系统,我们可以查询/扫描它。 一切似乎都很好。

但是,在与Java连接时:

 groovy> import org.apache.hadoop.hbase.HBaseConfiguration groovy> import org.apache.hadoop.hbase.client.HBaseAdmin groovy> conf = HBaseConfiguration.create() groovy> conf.set("hbase.master","127.0.0.1:60000"); groovy> hbase = new HBaseAdmin(conf); Exception thrown org.apache.hadoop.hbase.ZooKeeperConnectionException: org.apache.hadoop.hbase.ZooKeeperConnectionException: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getZooKeeperWatcher(HConnectionManager.java:1000) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.java:303) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.(HConnectionManager.java:294) at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:156) at org.apache.hadoop.hbase.client.HBaseAdmin.(HBaseAdmin.java:84) 

我一直试图找到原因,但我根本没有任何线索。 一切似乎都正确安装。

 netstat -lnp|grep 60000 tcp6 0 0 :::60000 :::* LISTEN 22891/java 

看起来也不错。

 # telnet localhost 60000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 

如果你输入任何东西+输入就会连接并死掉(不确定这是不是这个想法,9090上的节俭也是如此)。

谁能帮我?

查尔斯,

这是Zookeeper(ZK)错误。 HBase客户端尝试从Zookeeper获取/ hbase节点并失败。

您可以从HBase主Web界面获取ZK转储。 您应该看到与ZK的所有连接,并确定是否有些事情正在耗尽它们。

在深入研究其他任何事情之前,您可以尝试重新启动ZK群集,看看它是否能解决您的问题。 (你看到单个客户端的情况很奇怪)。

HBase具有增加与ZK的连接数的设置。 它的

 hbase.zookeeper.property.maxClientCnxns 

最近有一些与默认连接数相关的更新(见下文)(有一个具有所有默认配置的hbase-default.xml文件)。 您可以在hbase-site.xml文件中(在HBase conf dir下)覆盖它并将其提高到100或更多。 但请确保您没有以这种方式掩盖真正的问题,您不应该在单个客户端上看到此问题。

我们遇到了类似的情况,但是在升级到HBase-0.90之后,在map-reduce作业的繁重操作期间发生了这种情况。

以下是与您的问题相关的几个问题:

如果您仍然无法弄清楚,请发送电子邮件至hbase-users列表或加入freenode上的#hbase频道并提出实时问题。

问题实际上是(由于某种原因……我真的没有详细说明)防火墙阻止了与Zookeeper交谈所需的一个端口; 从它的命令行工作,从我的应用程序它没有。 然而,当我禁用防火墙时,一切都工作得很好。

感谢您的帮助!

当用户在客户端获取的hbase-site.xml中为“zookeeper.znode.parent”定义的值不正确时,或者在编写自定义API的情况下,“zookeeper.znode.parent”被错误地更新为一个错误的位置。 例如,默认的“zookeeper.znode.parent”设置为“/ hbase-unsecure”,但如果您错误地指定为“/ hbase”而不是我们在群集中设置的那样,我们将遇到此问题尝试连接到HBase群集时出现exception

我有同样的问题连接到我的hbase数据库。

事实certificate我的/etc/hosts中的db机器地址不好。