get“错误:无法从zookeeper获取主地址;使用hbase shell时,znode data==null

rkkpypqq  于 2021-06-03  发布在  Hadoop
关注(0)|答案(8)|浏览(369)

我安装了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

为什么我会犯这个错误?另一个问题:我需要跑步吗 ./sbin/start-dfs.sh 以及 ./sbin/start-yarn.sh 在我跑垒之前?
还有,你用了什么 ./sbin/start-dfs.sh 以及 ./sbin/start-yarn.sh 为了什么?
这是我的一些文件:

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>

core-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>

yarn-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>
vuktfyat

vuktfyat1#

您需要启动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

参考来源-zookeeper

dddzy1tm

dddzy1tm2#

如果虚拟机或主机处于休眠状态,zookeeper也可能无法保持活动状态。重启vm应该可以解决这个问题。

wh6knrhe

wh6knrhe3#

如果只想运行hbase而不进入zookeeper management for standalone hbase,请删除所有 propertyhbase-site.xml 除了名为 hbase.rootdir .
现在快跑 /bin/start-hbase.sh . hbase附带了自己的zookeeper,当您运行时就可以启动它 /bin/start-hbase.sh ,如果你是第一次尝试回避问题,这就足够了。稍后您可以为zookeeper设置分布式模式配置。
你只需要跑 /sbin/start-dfs.sh 用于运行hbase,因为 hbase.rootdir 设置为 hdfs://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.

yc0p9oo0

yc0p9oo04#

我也犯了同样的错误。linux防火墙正在阻止连接。可以通过telnet测试端口。一个快速解决方法是关闭防火墙,看看它是否修复了它:
完全禁用所有节点上的防火墙。注意:重新启动计算机后,此命令将失效。

systemctl stop firewalld

长期的解决办法是您必须配置防火墙以允许hbase端口。
注意,您的hbase版本可能使用不同的端口:https://issues.apache.org/jira/browse/hbase-10123

ny6fqffe

ny6fqffe5#

一个快速的解决方案是重新启动hbase:

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

8dtrkrch6#

在我的例子中,运行hbase时出现了相同的错误-我没有在hbase-site.xml中包含zookeeper属性,但仍然得到了上述错误消息(根据apachehbase指南,只有rootdir和distributed这两个属性是必需的)。
我还可以追溯我的jps命令输出,发现我的hregion服务器和hmaster确实没有正确地启动和运行。
在停止和启动(比如重置)之后,我确实启动了这两个,并且可以正常运行hbase。

gv8xihay

gv8xihay7#

如果发生在vmware或virtual box中,请通过命令重新启动cloudera init1 请检查您是否具有根权限,然后重试,希望它能有所帮助:)
hbase外壳

u5rb5r59

u5rb5r598#

hbase shell的输出非常高,许多错误配置都会导致此消息。为了帮助自己进行调试,最好查看hbase登录

/var/log/hbase

找出问题的根本原因。
我也有同样的问题。对我来说,根本原因是hadoop kms与hbase主机的端口号冲突。它们都使用16000端口,所以我的主机在调用hbase shell时都没有启动。在我修好之后,我的hbase工作了。
同样,kms端口冲突可能不是您的根本原因。强烈建议查看/var/log/hbase以找到根本原因。

相关问题