【问题标题】:HBase standalone failed to connect (fail to create table)HBase 独立连接失败(创建表失败)
【发布时间】:2013-04-01 21:56:19
【问题描述】:

我正在尝试在这篇文章之后以独立模式部署 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'

提前致谢!

【问题讨论】:

  • 尝试在任何浏览器中打开hbase web ui:localhost:60010 可以吗?
  • 还有,这个目录结构存在吗?
  • @Sourav 是的,它们都可以工作,但仍然无法正常工作。我已改用 cloudera 捆绑包,它更容易。
  • 我有这个错误,但不能使用 Cloudera 包,所以仍然希望得到一些帮助。根据 hbase 快速入门的建议,我有一个不存在的 ZooKeeper dataDir(hbase 将创建一个),并删除了我的 /etc/hosts 文件中的所有 ipv6 引用。
  • @Hypnos:你能找到解决这个问题的方法吗?我也卡在这里了。

标签: java hadoop nosql hbase apache-zookeeper


【解决方案1】:

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

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

【讨论】:

  • 使用独立的 hbase 我得到了同样的错误,所以 zookeeper 是由 hbase 根据需要启动的。创建表时,hbase 无法启动 zookeeper,因为它说“ZooKeeper 存在 3 次重试后失败”。这似乎是说 hbase 认为 zookeeper 存在但连接失败。我查看 jps -l 并没有看到 zookeeper 那为什么它认为它存在?
【解决方案2】:

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

【讨论】:

  • 你能解释一下“-ROOT-区域服务器的文件夹”是什么意思吗?默认的独立配置使用 Hbase 自身启动的 ZooKeeper 版本。我在使用独立 Hbase 的 Mac 上收到此错误。
【解决方案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>

【讨论】:

  • 这实际上以某种方式为我解决了它。这让我发疯了,很奇怪这不在说明中,因为它在 macOS Big Sur 中似乎是必要的。
【解决方案4】:

某些内容可能与您的配置有关。首先,我下载 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 上的其他配置相关联。通过这种方式找到答案可能会对您有所帮助。

【讨论】:

    【解决方案5】:

    错误“ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists 在 3 次重试后失败”很可能表明您没有运行 zookeeper - 在启动 HBase shell 之前,您可以验证 Zookeeper quorum起来了,使用:

    $ jps
    

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

    62019 Jps
    61098 HMaster        
    61233 HRegionServer     
    61003 HQuorumPeer
    

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

    Zookeeper 是 HBase 集群所必需的 - 因为它管理它。


    解决方案

    在你的 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
    

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


    相关答案很少:123

    【讨论】:

      【解决方案6】:

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

      【讨论】:

      • 首次启动独立的 hbase 将根据 hbase 快速入门创建文件夹。我尝试使用干净的 dataDir 和不存在的数据目录,同样的错误。
      • 当我这样做时,它修复了 ZK 错误,但我也丢失了我的本地 HBase 表。
      【解决方案7】:

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

      hbase-1.1.2/bin/start-hbase.sh
      

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

      【讨论】:

        【解决方案8】:

        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下的所有文件。并尝试检查日志错误信息。当我有正确的配置并在hbase-env.sh 中添加JAVA_HOME 变量时,我已修复此错误。

        【讨论】:

          【解决方案9】:

          编辑 /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

          【讨论】:

          • 我自己运气不好。还取出了 /etc/hosts 中对 localhost 的所有 ipv6 引用
          【解决方案10】:

          我也有同样的问题。在两个文件夹 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
          

          【讨论】:

            【解决方案11】:

            问题出在“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) 启动-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),a应该存在名为 myid 的文件。

            【讨论】:

              【解决方案12】:

              (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
              

              【讨论】:

              • 请在格式化您的答案时更加小心。
              猜你喜欢
              • 2019-11-08
              • 1970-01-01
              • 2017-04-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-11-27
              • 1970-01-01
              相关资源
              最近更新 更多