【发布时间】:2015-10-18 21:24:56
【问题描述】:
我在 Ubuntu 中使用 HBASE 0.94.8 独立模式。它工作正常,我能够在 Hbase-shell 中执行所有操作。但是在我登录我的系统后,它给出了以下错误
15/07/28 15:10:30 ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries
15/07/28 15:10:30 WARN zookeeper.ZKUtil: hconnection-0x14ed40513350009 Unable to set watcher on znode (/hbase)
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1041)
at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:172)
at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:450)
at org.apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker.checkIfBaseNodeAvailable(ZooKeeperNodeTracker.java:208)
at org.apache.hadoop.hbase.zookeeper.RootRegionTracker.waitRootRegionLocation(RootRegionTracker.java:77)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:885)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:998)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:896)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:998)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:900)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:857)
是的,我确实搜索了很多。我找到了一些信息ZooKeeper exists failed after 3 retries。可能这个错误是因为 zookeeper 已停止。但我不知道要重新启动它。我尝试再次启动Hbase 和thrift,但这仍然是问题。
这个命令ps axww | grep QuorumPeerMain 给了我以下输出:
6162 pts/2 S+ 0:00 grep --color=auto QuorumPeerMain
如果我重新启动系统,Hbase 就会开始工作。但我想要适当的解决方案。
临时解决方案
使用以下命令我 grep 这个 HBASE 进程:
ps -fe grep | hbase
然后杀死HBASE的所有进程:
kill -9 4555//assuming 4555 is process id of hbase
然后用 sudo 和 thrift 重新启动 hbase,它开始工作,但我想要永久解决方案。因为如果我在服务器中使用 HBASE(意味着不是本地机器)我不能每次都重新启动 HBASE。
【问题讨论】: