3个retiries后,Hbase错误zookeeper存在失败

Man*_*wal 9 hbase apache-zookeeper

我在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)
Run Code Online (Sandbox Code Playgroud)

是的,我确实搜索了很多.我发现一些信息ZooKeeper在3次重试后存在失败.可能是这个错误是因为zookeeper被停止了.但我不知道要重新启动它.我试着重新开始Hbase,thrift但仍然是这个问题.

这个命令ps axww | grep QuorumPeerMain给我以下输出:

 6162 pts/2    S+     0:00 grep --color=auto QuorumPeerMain
Run Code Online (Sandbox Code Playgroud)

如果我重新启动系统,Hbase将开始工作.但我想要适当的解决方案.


临时解决方案

使用以下命令我grep这个HBASE进程:

ps -fe grep | hbase
Run Code Online (Sandbox Code Playgroud)

然后杀死HBASE的所有进程:

kill -9 4555//assuming 4555 is process id of hbase
Run Code Online (Sandbox Code Playgroud)

然后用sudo和thrift重新启动hbase,它开始工作,但我想要永久的解决方案.因为如果我在服务器中使用HBASE(意味着不是本地机器),我不能每次都重启HBASE.

Nab*_*med 5

问题

Hbase错误zookeeper存在失败,在3次重试后 清楚地表明Zookeeper仲裁未运行-最可能的原因可能是与您的zookeeper.quorum设置有些矛盾conf/hbase-site.xml,最小必须为:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/testuser/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/testuser/zookeeper</value>
  </property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在下一节中,将简要介绍为什么需要zookeeper,以及如何验证其是否在运行。


概述

从文本中预先假设(独立设置)-您正在混淆。简单来说,Zookeeper管理HBase,是必须的。

默认情况下,HBase本身会处理Zookeeper的设置,即开始-停止(尽管可以更改)-要验证对文件的查找conf/hbase-evn.sh(在您的hbase目录中),必须有一行:

export HBASE_MANAGES_ZK=true
Run Code Online (Sandbox Code Playgroud)

基本上告诉HBase是否应该管理自己的Zookeeper实例。如果设置为false,则编辑为true

现在进行验证,这是一个有用的命令(先忘了ps然后再grep):

$ jps
Run Code Online (Sandbox Code Playgroud)

该命令将列出计算机上的所有Java进程(HBase本身是Java应用程序),即可能的输出必须是(对于最小的独立HBase设置):

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer
Run Code Online (Sandbox Code Playgroud)

不要只是杀死HBase进程,而要使用start-stop实用程序:

$ ./bin/stop-hbase.sh
Run Code Online (Sandbox Code Playgroud)

进行必要的更改,然后重新启动:

$ ./bin/start-hbase.sh
Run Code Online (Sandbox Code Playgroud)

PS:我可能会(完全)误解了您的问题,请在评论中让我知道,我会再次与您联系并为您提供合适的解决方案-适用于即将到来的SO访问者。


Ram*_*mzy 0

如果它只是启动动物园管理员,应该对你有帮助。我希望您知道在我们启动 hbase 之前,zookeeper 应该启动并运行。