我要完全疯了:
已安装的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<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&amp; amp;节俭,一切都很好;我们正在添加数据,它正在进入系统,我们可以查询/扫描它。一切似乎都很好。
但是,在与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上的节俭也是如此)。
任何人都可以帮助我吗?
答案 0 :(得分:9)
这是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频道并提出实时问题。
答案 1 :(得分:3)
问题实际上是(由于某种原因......我没有详细说明)防火墙阻止了与Zookeeper交谈所需的一个端口;从它的工作命令行,从我的应用程序它没有。然而,当我禁用防火墙时,一切都工作得很好。
感谢您的帮助!
答案 2 :(得分:3)
当用户在客户端获取的hbase-site.xml中为“zookeeper.znode.parent”定义的值不正确时,或者在编写自定义API的情况下,“zookeeper.znode.parent”为错误地更新到错误的位置。例如,默认的“zookeeper.znode.parent”设置为“/ hbase-unsecure”,但是如果您错误地指定为“/ hbase”而不是我们在群集中设置的那样,我们将遇到此尝试连接到HBase集群时出现异常
答案 3 :(得分:1)
我遇到了与我的hbase db相同的问题。
原来我/etc/hosts
中的数据库机器地址不好。
答案 4 :(得分:1)
第1步:首先将使用“ jps”命令检查HBase主节点是否正在运行。
第2步:使用“ stop-all.sh”命令停止Hadoop集群上所有正在运行的服务。
有关此问题的更多信息:
http://commandstech.com/hbase-error-keeperrorcode-connectionloss-for-hbase-in-cluster/
第3步:使用“ start-all.sh”命令启动所有正在运行的服务。
步骤4:使用“ jps”命令检查服务是否显示HBase主站正常工作,否则可以执行以下步骤:
第5步:使用“ sudo su”转到root用户
第6步:转到hbase shell文件路径:“ cd /usr/lib/habse-1.2.6-hadoop/bin/start-hbase.sh”
第7步:使用“ hbase shell”命令打开hbase shell
第8步:使用“列表”命令。