我正在尝试按照本文的标准在独立模式下部署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
我的配置:
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'
提前致谢!
答案 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没有运行。
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。任何人如果执行这些步骤仍然无法解决问题 - 请将您的问题留在评论部分。
答案 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