21

我正在尝试在本文之后以独立模式部署 Hbase:http: //hbase.apache.org/book.html#quickstart。版本为0.92.1-cdh4.1.2

但是在尝试创建表时出现这些错误:

错误信息:

    13/04/01 14:07:10 ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries
13/04/01 14:07:10 WARN zookeeper.ZKUtil: hconnection Unable to set watcher on znode /hbase/master
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
    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:1021)
    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:154)
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.watchAndCheckExists(ZKUtil.java:226)
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker.start(ZooKeeperNodeTracker.java:82)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.java:580)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:569)

输出日志:

13/04/01 14:06:39 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=localhost:2181 sessionTimeout=180000 watcher=hconnection
13/04/01 14:06:39 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 10231@localhost
13/04/01 14:06:39 INFO zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (Unable to locate a login configuration)
13/04/01 14:06:39 WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:599)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)
13/04/01 14:06:39 WARN zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid

我的配置:

  1. 在 hbase-env.sh 中添加了 JAVA_HOME
  2. hbase_site.xml

    <name>hbase.rootdir</name>
    
    <value>file:///home/hadoop/data</value>
    

    <name>hbase.zookeeper.property.dataDir</name>
    
    <value>file:///home/hadoop/zookeeper</value>
    

我试图修改 /etc/hosts,它看起来像这样(oracle 是主机名):

127.0.0.1   localhost oracle

或者

[server ip]   localhost oracle

但这些对我不起作用。

我的确切代码是:

[usr@oracle bin]$ ./start-hbase.sh 
starting master, logging to /home/hadoop/hbase-0.94.6/bin/../logs/hbase-usr-master-oracle.out
[usr@oracle bin]$ hbase shell
13/04/01 14:57:55 WARN conf.Configuration: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.92.1-cdh4.1.2, rUnknown, Thu Nov  1 18:02:07 PDT 2012

hbase(main):001:0> create 'test','cf'

提前致谢!

4

12 回答 12

8

看起来hbase.zookeeper.quorum您的配置中缺少。请查看此 HBase 指南章节,它可能会有所帮助:http ://hbase.apache.org/book/zookeeper.html

另外请检查 zookeeper 是否在正确的端口上启动,并且(更常见的情况)正确的 IP 接口。

于 2013-05-19T17:57:49.253 回答
3

我不确定你是否在 Mac 上,但我也遇到了这个问题。原来是因为 .DS_STORE 文件位于 -ROOT- 区域服务器的文件夹中,导致连接异常。很奇怪!

于 2014-07-24T10:48:04.897 回答
3

在 HBase 1.2.3 中,我在独立模式下遇到了几乎相同的错误“ZooKeeper 存在 4 次重试后失败”。这是由于运行 ./start-hbase.sh 没有权限连接到端口 2181 造成的。解决方案结果非常简单:

sudo ./start-hbase.sh

以防万一,hbase-site.xml 的配置是:

<configuration>
   <property>
      <name>hbase.rootdir</name>
      <value>file:///home/hadoop/HBase/HFiles</value>
   </property>
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/zookeeper</value>
   </property>
</configuration>
于 2016-12-14T13:30:45.180 回答
2

有些东西可能与您的配置有关。首先,我下载 HBase tar ( http://hbase.apache.org/book/quickstart.html ) 来运行 HBase。我没有按照链接做任何配置,只是下载,启动 HBase,运行“HBase shell”。但是在创建表格时,它给了我你提到的错误。然后,我在 Mac 上搜索 HBase 安装,因为我使用的是 Mac。我采用“brew install hbase”安装HBase(http://chase-seibert.github.io/blog/2013/02/01/getting-starting-with-hbase-and-pig.html)。完成安装后,我重新创建表。成功。

所以重新考虑你的错误,它必须与你的 JAVA_HOME 或 HBase 上的其他配置相关联。通过这种方式找到答案可能会对您有所帮助。

于 2014-04-10T04:47:10.533 回答
2

错误“ ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries ”很可能表明您没有zookeeper运行 - 在启动 HBase shell 之前,您可以使用以下方法验证 Zookeeper quorum 是否已启动:

$ jps

该命令将列出机器上的所有 java 进程,即可能的输出必须是 - 对于您尝试设置的独立 HBase 设置(忽略左列中的数字,即 pid):

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer

如果您的输出没有HQuorumPeer- 表示 zookeeper 没有运行。

HBase 集群需要Zookeeper - 因为它管理它。


解决方案

在您的 HBase 目录中,首先停止 HBase:

$ ./bin/stop-hbase.sh

如果您正在尝试制定“独立 HBase”示例 - 坚持示例中提供的最低配置:

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/adio/workspace/hadoop/hbase/directories/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/adio/workspace/hadoop/hbase/directories/zookeeper</value>
  </property>
</configuration>

即你conf/hbase-site.xml应该有上述内容。

设置后,现在再次启动 HBase:

$ ./bin/start-hbase.sh

PS如果通过这些步骤仍然没有解决问题的任何人 - 将您的问题留在评论部分。


很少有相关的答案:1 2 3

于 2016-04-13T10:34:36.117 回答
1

通过 stop-hbase.sh 停止 hbase 定位到您的 zookeeper 文件夹并清空该文件夹的内容。然后重新启动 hbase 和 hbase shell。这为我解决了这个问题

于 2015-02-25T11:36:05.833 回答
1

我在设置 hbase 时也遇到了这个问题。几分钟后,我发现我忘记了通过运行以下命令来启动 hbase:

hbase-1.1.2/bin/start-hbase.sh

运行此命令后,hbase shell 工作正常。

于 2016-01-11T11:57:27.597 回答
1

hbase-site.xmlconf中似乎有一些错误。根据快速入门文档,独立的 HBasehbase-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>

Zookeeper 配置中没有file://。并且当你启动 HBase 失败时要小心,你必须删除你存储 hbase 和 zookeeper 的文件。按照上面的配置,你要删除 和 下的所有/home/testuser/hbase文件/home/testuser/zookeeper。并尝试检查日志错误信息。当我拥有正确的 conf 并JAVA_HOMEhbase-env.sh.

于 2016-12-02T06:31:06.670 回答
0

编辑 /etc/hosts 文件 ...在第二行将 127.0.1.1 更改为 127.0.0.1 然后启动 Hbase ...它应该可以正常工作。如果不起作用...尝试此链接上的步骤 http://lets-do-something-big.blogspot.in/2014/01/hbase-installation-on-ubuntu-lubuntu.html

于 2014-01-29T06:05:53.473 回答
0

问题在于“ hbase.zookeeper.property.dataDir ”属性下的“hbase-site.xml”

  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/lib/hbase/zookeeperdata</value>
  </property>

注意:在此属性下设置“本地”文件系统中的路径。

我们只需要在本地文件系统上指定 HBase 和 ZooKeeper 写入数据的目录即可。例如在这种情况下,您执行 1) start-hbase.sh 2) hbase shell 命令

导航到路径(在我的例子中是 /usr/lib/hbase/zookeeperdata),您将在其中看到一个名为myid的文件。

总结验证点

1) 在执行 jps 以下过程应运行 HQuorumPeer ,ResourceManager, HMaster ,NameNode,Main, HRegionServer ,SecondaryNameNode,DataNode,Jps,NodeManager

2) 在 hbase-site.xml 下,对于属性“hbase.zookeeper.property.dataDir”,路径应设置为本地路径,即文件夹应在本地存在。

3) 执行 start-hbase.sh 和 hbase shell 命令后 --> 导航到 hbase.zookeeper.property.dataDir 中指定的路径(在我的示例中,路径是 /usr/lib/hbase/zookeeperdata),一个名为 myid 的文件应该在场。

于 2016-08-10T11:03:59.867 回答
0

我也有同样的问题。在两个文件夹 hbase.rootdir 和 hbase.zookeeper.property.dataDir 中正确设置所有者和组。给这两个文件夹授予 755 权限。

sudo chown -R hadoop_user:hadoop_user_group home/hadoop/data
sudo chmod -R 755 home/hadoop/data
于 2016-03-29T11:35:49.527 回答
-1

(1) 只要运行./$HBASE_HOME/bin/start-habse.sh,下面的异常就会消失。

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:1045)
    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:221)
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:419)
    at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:905)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:648)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

 - List item
于 2016-10-02T15:58:14.713 回答