[英]Hbase client ConnectionLoss for /hbase error
我要疯了:
安装了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
正在工作并得出运行“列表”的正确结果,并且;
hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" 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 & thrift 连接时,一切正常; 我们正在添加数据,它正在进入系统,我们可以查询/扫描它。 一切似乎都很好。
但是,与 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.<init>(HConnectionManager.java:294)
at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:156)
at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(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上的thrift也是如此)。
谁能帮我?
这是 Zookeeper(ZK) 错误。 HBase 客户端尝试从 Zookeeper 获取 /hbase 节点并失败。
您可以从 HBase 主 web 接口获取 ZK 转储。 您应该看到与 ZK 的所有连接,并确定是否有什么东西让它们筋疲力尽。
在深入研究任何其他内容之前,您可以尝试重新启动 ZK 集群,看看它是否能解决您的问题。 (奇怪的是,您在单个客户端上看到了这一点)。
HBase 有一个设置来增加与 ZK 的连接数。 它是
hbase.zookeeper.property.maxClientCnxns
最近有一些与默认连接数相关的更新(见下文)(有一个 hbase-default.xml 文件,其中包含所有默认配置)。 您可以在 hbase-site.xml 文件(在 HBase conf 目录下)中覆盖它并将其提高到 100 或更多。 但是请确保您没有以这种方式掩盖真正的问题,您不应该在单个客户端上看到这个问题。
我们也遇到过类似的情况,但是在升级到 HBase-0.90 之后,它发生在 map-reduce 作业的繁重操作期间。
以下是与您的问题相关的几个问题:
如果您仍然无法弄清楚,请将 email 发送到 hbase-users 列表或加入 freenode 上的#hbase 频道并提出实时问题。
当用户在来自客户端的 hbase-site.xml 中为“zookeeper.znode.parent”定义的值不正确时,或者在编写自定义 API 的情况下,“zookeeper.znode.parent”被错误地更新为一个错误的位置。 例如,默认的“zookeeper.znode.parent”设置为“/hbase-unsecure”,但是如果您错误地指定了“/hbase”,而不是我们在集群中设置的,我们会遇到这种情况尝试连接到 HBase 集群时出现异常
问题实际上是(出于某种原因......我不太了解)防火墙阻止了与 Zookeeper 通信所需的端口之一; 从它工作的命令行,从我的应用程序它没有。 但是,当我禁用防火墙时,突然一切正常。
谢谢您的帮助!
我在连接到我的 hbase 数据库时遇到了同样的问题。
原来我的/etc/hosts
中有一个错误的 db 机器地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.