2013-11-27 61 views
5

我在伪分布式模式下运行Hadoop-1.2.1和HBase-0.94.11。ZooKeeper在3次重试后失败

由于停电Hadoop和HBase的设置去down.Next时候,我重新启动我的机器和伪分布设置,HBase的停止与HBase的外壳下面的错误工作:

13/11/27 13:53:27 ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries 
13/11/27 13:53:27 WARN zookeeper.ZKUtil: hconnection Unable to set watcher on znode (/hbase/hbaseid) 
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid 
    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.ClusterId.readClusterIdZNode(ClusterId.java:61) 
    at org.apache.hadoop.hbase.zookeeper.ClusterId.getId(ClusterId.java:50) 
    at org.apache.hadoop.hbase.zookeeper.ClusterId.hasId(ClusterId.java:44) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.ensureZookeeperTrackers(HConnectionManager.java:720) 
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getMaster(HConnectionManager.java:789) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:129) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 

继是进程:

[email protected]:~$ jps 
16914 NameNode 
19955 Jps 
29460 Main 
17728 TaskTracker 
19776 HMaster 
17490 JobTracker 
17392 SecondaryNameNode 

回答

1

你确定你的Zookeeper进程正在运行(你的jps列表不显示QuorumPeerMain的条目)吗? jps堆栈可能不会显示所有正在运行的java进程 - 请尝试使用ps axww | grep QuorumPeerMain

如果你的动物园管理员拒绝启动,检查它的日志,看看是否有一些堆栈跟踪线索

+0

我跑的命令及以下的输出: hduser @用户的ubuntu:〜$ PS axww | grep QuorumPeerMain 15527 pts/2 S + 0:00 grep --color = auto QuorumPeerMain –

+0

所以zookeeper没有运行(grep匹配是grep cmd本身) - 我建议你停止你的集群服务,启动zookeeper,剩下的hadoop和hbase服务 –

+1

如何重新启动“Zookeeper”? – Manwal

0

它的简单的动物园管理员法定人数进程没有运行 - 如果它一直以来,有好多已经另一个java进程:

[email protected]:~$ jps 
16914 NameNode 
19955 Jps 
29460 Main 
17728 TaskTracker 
19776 HMaster 
17490 JobTracker 
17392 SecondaryNameNode 

xxxxx HQuorumPeer

Zookeeper需要HBase的集群 - 因为它对其进行管理。


可能的解决方案: 默认情况下,HBase的管理饲养员本身即启动和停止动物园管理员法定人数(动物园管理员节点群) - 验证设置看起来到文件的conf/hbase-evn.sh(在HBase的目录)必须有一个线:

export HBASE_MANAGES_ZK=true 

主要讲述的HBase是否应该管理自己的动物园管理员与否的实例。如果它设置为false,请编辑为true

而且验证的HBase的conf在conf/hbase-site.xml

应为伪分布式模式下工作的最小的conf是:

​​

现在停止HBase的,如果它已经运行:

$ ./bin/stop-hbase.sh 

进行必要的更改并重新启动:

$ ./bin/start-hbase.sh 

回答对您有帮助:12