使用Hbase shell时出现“错误:无法从ZooKeeper获取主地址; znode数据== null”

时间:2014-03-26 14:06:07

标签: shell hadoop hbase

我安装了Hadoop2.2.0和Hbase0.98.0,这就是我的工作:

$ ./bin/start-hbase.sh 

$ ./bin/hbase shell

2.0.0-p353 :001 > list

然后我得到了这个:

ERROR: Can't get master address from ZooKeeper; znode data == null

为什么我收到此错误?另一个问题: 在运行base之前,是否需要运行./sbin/start-dfs.sh./sbin/start-yarn.sh

此外,./sbin/start-dfs.sh./sbin/start-yarn.sh用于什么?

以下是我的一些conf doc:

HBase的-sites.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://127.0.0.1:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

    <property>
        <name>hbase.tmp.dir</name>
        <value>/Users/apple/Documents/tools/hbase-tmpdir/hbase-data</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>localhost</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/Users/apple/Documents/tools/hbase-zookeeper/zookeeper</value>
    </property>
</configuration>

芯sites.xml

<configuration>

  <property>
      <name>fs.defaultFS</name>
      <value>hdfs://localhost:9000</value>
      <description>The name of the default file system.</description>
  </property>

  <property>
      <name>hadoop.tmp.dir</name>
      <value>/Users/micmiu/tmp/hadoop</value>
      <description>A base for other temporary directories.</description>
  </property>

  <property>
      <name>io.native.lib.available</name>
      <value>false</value>
  </property>

</configuration>

纱sites.xml

<configuration>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>

</configuration>

8 个答案:

答案 0 :(得分:14)

如果您只想在不进入独立HBase的Zookeeper管理的情况下运行HBase,则从property中删除除名为hbase-site.xml的属性块之外的所有hbase.rootdir块。

现在运行/bin/start-hbase.sh。 HBase带有自己的Zookeeper,它在你运行/bin/start-hbase.sh时启动,如果你是第一次尝试解决问题就足够了。稍后您可以为Zookeeper提供分布式模式配置。

您只需运行/sbin/start-dfs.sh即可运行HBase,因为hbase.rootdirhdfs://127.0.0.1:9000/hbase的值设置为hbase-site.xml。如果您使用file:///some_location_on_local_filesystem将其更改为本地文件系统上的某个位置,则您甚至无需运行/sbin/start-dfs.sh

hdfs://127.0.0.1:9000/hbase表示它是HDFS上的一个位置,/sbin/start-dfs.sh启动namenode和datanode,它提供了访问HDFS文件系统的底层API。要了解Yarn,请查看http://hadoop.apache.org/docs/r2.3.0/hadoop-yarn/hadoop-yarn-site/YARN.html

答案 1 :(得分:6)

如果vm或主机进入休眠状态,也可能发生这种情况,Zookeeper将不会保持活动状态。 重新启动VM应该可以解决问题。

答案 2 :(得分:3)

您需要启动zookeeper然后运行Hbase-shell

{HBASE_HOME}/bin/hbase-daemons.sh {start,stop} zookeeper

您可能想在hbase-env.sh

中检查此属性
# Tell HBase whether it should manage its own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false

请参阅Source - Zookeeper

答案 3 :(得分:2)

一个快速解决方案可能是重启hbase:

1) Stop-hbase.sh
2) Start-hbase.sh

答案 4 :(得分:1)

我有完全相同的错误。 Linux防火墙阻止了连接。可以通过telnet测试端口。快速解决方法是关闭防火墙,看看它是否修复了它:

完全禁用所有节点上的防火墙。注意:此命令将无法重启您的计算机。

systemctl stop firewalld

长期修复是您必须配置防火墙以允许hbase端口。

注意,您的hbase版本可能使用不同的端口: https://issues.apache.org/jira/browse/HBASE-10123

答案 5 :(得分:0)

Hbase shell的输出是相当高的水平,许多错误配置会导致此消息。为了帮助您自己调试,在

中查看hbase日志会好得多
/var/log/hbase 

找出问题的根本原因。

我也有同样的问题。对我来说,我的根本原因是由于hadoop-kms与我的hbase-master有一个冲突的端口号。他们都使用16000端口,所以当我调用hbase shell时,我的HMaster甚至都没有启动。在我修复之后,我的hbase工作了。

同样,kms端口冲突可能不是你的根本原因。强烈建议查看/ var / log / hbase以找到根本原因。

答案 6 :(得分:0)

在我运行hbase时出现相同错误的情况下-我没有在hbase-site.xml中包含zookeeper属性,但仍然收到上述错误消息(如基于Apache hbase指南中的,只有两个属性:rootdir和分发是必不可少的。)

我还可以回溯jps命令的输出,发现我的Hregion服务器和Hmaster确实没有正常运行。

停止并启动后(如重置),我确实将这两个启动并运行,并且可以正确运行hbase。

答案 7 :(得分:0)

如果它在VMWare或虚拟框中发生,请通过命令 init1 请重新启动Cloudera,请检查您是否具有root特权,然后重试它希望对您有所帮助:)< / p>

  

hbase外壳