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

时间:2015-07-28 10:58:22

标签: 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)

确定我已经搜索了很多。我找到了一些信息ZooKeeper exists failed after 3 retries。可能是这个错误是因为 zookeeper 已停止。但我不知道要重新启动它。我尝试再次启动Hbasethrift,但问题仍然存在。

此命令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。

6 个答案:

答案 0 :(得分:4)

问题

3次退役后,Hbase错误zookeeper存在失败 清楚地表明zookeeper仲裁没有运行 - 最可能的原因可能与conf/hbase-site.xml中的zookeeper.quorum设置有些不一致,最小的必须是:

<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>

在下一节中,我们简明扼要地提到了为什么需要zookeeper以及如何验证它是否正在运行。

概述

从您的文字(独立设置)预先假设 - 您正在混淆。 Zookeeper用简单的话来管理HBase,是必须要求的。

默认情况下,HBase本身处理zookeeper设置,start-stop(虽然可以更改) - 要验证查看文件conf/hbase-evn.sh(在你的hbase目录中)必须有一行:

export HBASE_MANAGES_ZK=true

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

现在进行验证有一个有用的命令(忘记ps然后grep):

$ jps

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

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer

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

$ ./bin/stop-hbase.sh

进行必要的更改并重新开始:

$ ./bin/start-hbase.sh

PS 我可能(完全)误解了您的问题,请在评论中告诉我,我会再次回复您,并为即将到来的SO访问者找到正确的解决方案。

答案 1 :(得分:3)

当您查看日志文件时,您会发现zookeeper无法与端口连接。例如,543210。这只是意味着 您之前已在计算机上安装了Hadoop,因此hbase会尝试查找以前的hadoop安装的zookeeper。请重命名现有的hadoop设置或从系统中删除完全hadoop。 (但请注意,即使在删除之后,zookeeper似乎也会留下任何东西。)

  • 重命名hadoop安装文件夹
  • 从.bashrc文件中删除条目
  • 重新启动计算机

答案 2 :(得分:2)

该问题似乎与hbasezookeeper无关。这是一个系统设置问题。

我的Mac OS X更新后,我遇到了同样的问题。

事实证明,更新后DNS设置已更改。我在hbase日志中看到了这一点:

2017-06-09 11:40:18,454 ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMasterCommandLine$LocalHMaster
    at org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:143)
[SKIP]
    at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2432)
Caused by: java.lang.NullPointerException
    at org.apache.hadoop.net.DNS.reverseDns(DNS.java:92)

删除hbase-site.xml中的DNS设置后,问题消失了:

  <!--property>
    <name>hbase.zookeeper.dns.interface</name>
    <value>lo0</value>
  </property>
  <property>
    <name>hbase.regionserver.dns.interface</name>
    <value>lo0</value>
  </property>
  <property>
    <name>hbase.master.dns.interface</name>
    <value>lo0</value>
  </property-->

答案 3 :(得分:0)

如果它唯一的动物园管理员,this应该帮助你。我希望你知道在我们启动hbase之前,zookeeper应该启动并运行。

答案 4 :(得分:0)

我得到了几乎相同的错误&#34; ZooKeeper在4次重试后出现失败&#34;。它是由于运行./start-hbase.sh而没有连接到端口2181的权限引起的。解决方案结果非常简单:

sudo ./start-hbase.sh

我使用了与Nabeel Ahmed的帖子相同的hbase-site.xml配置。

答案 5 :(得分:0)

我正在使用sudo命令

hbase/bin$sudo ./start-habase.sh