HBase独立无法连接(无法创建表)

时间:2013-04-01 21:56:20

标签: java hadoop nosql hbase apache-zookeeper

我正在尝试按照本文的标准在独立模式下部署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
  2. 中添加了JAVA_HOME
  3. 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>
    

  4. 我试图修改/ 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'
    

    提前致谢!

12 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:3)

我不确定你是不是在Mac上,但我也有这个问题。事实证明,这是因为.DS_STORE文件位于-ROOT-区域服务器的文件夹中并导致连接异常。很奇怪!

答案 2 :(得分: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上的其他配置相关联。从这个方面找到答案可能对你有所帮助。

答案 3 :(得分:2)

在HBase 1.2.3中,我得到了几乎相同的错误&#34; ZooKeeper在4次重试后出现失败&#34;在独立模式下。它是由于运行./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>

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

hbase-1.1.2/bin/start-hbase.sh

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

答案 6 :(得分:1)

似乎hbase-site.xml conf中存在一些错误。根据快速入门document,独立HBase 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>

Zookeeper配置中没有file://。当你无法启动HBase时要小心,你必须删除存储hbase和zookeeper的文件。根据上述配置,您必须删除/home/testuser/hbase/home/testuser/zookeeper下的所有文件。并尝试检查日志错误信息。我有正确的配置并在JAVA_HOME中添加hbase-env.sh变量时修复了此错误。

答案 7 :(得分: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

答案 8 :(得分:0)

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

sudo chown -R hadoop_user:hadoop_user_group home/hadoop/data
sudo chmod -R 755 home/hadoop/data

答案 9 :(得分:0)

错误&#34; ERROR zookeeper.RecoverableZooKeeper:3次重试后ZooKeeper存在失败&#34;最有可能表示你没有zookeeper正在运行 - 在启动HBase shell之前,您可以使用以下命令验证Zookeeper仲裁是否已启动:

$ jps

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

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer

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

HBase集群需要

Zookeeper - 因为它管理它。

<强>解决方案

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

$ ./bin/stop-hbase.sh

如果你正试图找出独立的HBase&#39;示例 - 坚持示例中提供的最小conf:

<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

P.S。任何人如果执行这些步骤仍然无法解决问题 - 请将您的问题留在评论部分。

很少有相关答案:1 2 3

答案 10 :(得分:0)

问题出在' hbase.zookeeper.property.dataDir '属性下的'hbase-site.xml'

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

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

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

导航到路径(在我的情况下为/ usr / lib / hbase / zookeeperdata),您将在其中看到名为 myid 的文件。

总结验证点

1)在执行procs之后执行jps应该运行 的 HQuorumPeer 下,ResourceManager的,的 HMASTER 下,NameNode的,主,的 HRegionServer 下,SecondaryNameNode,数据管理部,JPS,节点管理器

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

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

答案 11 :(得分:-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