Shell 获得;错误:Can';无法从动物园管理员处获得主地址;znode数据==null";使用Hbase外壳时

Shell 获得;错误:Can';无法从动物园管理员处获得主地址;znode数据==null";使用Hbase外壳时,shell,hadoop,hbase,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/star

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

另外,使用
/sbin/start dfs.sh
/sbin/start warn.sh
做什么

以下是我的一些conf文档:

hbase-sites.xml

hbase.rootdir
hdfs://127.0.0.1:9000/hbase
hbase.cluster.distributed
真的
hbase.tmp.dir
/用户/apple/Documents/tools/hbase tmpdir/hbase数据
hbase.zookeeper.quorum
本地服务器
hbase.zookeeper.property.dataDir
/用户/apple/Documents/tools/hbase zookeeper/zookeeper
core-sites.xml

fs.defaultFS
hdfs://localhost:9000
默认文件系统的名称。
hadoop.tmp.dir
/用户/micmiu/tmp/hadoop
其他临时目录的基础。
io.native.lib.available
假的
java-sites.xml

纱线.节点管理器.辅助服务
mapreduce_shuffle
warn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler

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

如果只想运行HBase而不进入Zookeeper管理独立HBase,请参阅,然后从
HBase site.xml
中删除所有
属性块,名为
HBase.rootdir
的属性块除外

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

由于
HBase.rootdir
的值设置为
hdfs://127.0.0.1:9000/hbase
在您的
hbase站点.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。要了解纱线,请看。

我也有同样的错误。Linux防火墙正在阻止连接。可以通过telnet测试端口。一个快速修复方法是关闭防火墙,看看它是否修复了它:

完全禁用所有节点上的防火墙。注意:重新启动计算机后,此命令将无法继续执行

systemctl stop firewalld
长期解决方案是,您必须配置防火墙以允许hbase端口

注意,您的hbase版本可能会使用不同的端口:
Hbase外壳的输出非常高,许多错误配置都会导致此消息。为了帮助自己进行调试,最好查看hbase登录

/var/log/hbase 
找出问题的根本原因

我也有同样的问题。对我来说,根本原因是hadoop kms与我的hbase主机的端口号冲突。他们都在使用端口16000,所以当我调用hbase shell时,我的HMaster甚至都没有启动。在我解决了这个问题后,我的hbase工作了


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

如果虚拟机或主机处于睡眠状态,Zookeeper也可能无法继续工作。
重新启动VM应该可以解决问题。

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

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

在我的案例中,运行hbase时出现了相同的错误-我没有在hbase-site.xml中包含zookeeper属性,但仍然得到了上述错误消息(根据Apache hbase指南,只有两个属性:rootdir和distributed是必需的)

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


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

如果在VMWare或virtual box中发生这种情况,请通过命令重新启动Cloudera
init1
请检查您是否具有root权限并重试,希望它能有所帮助:)

hbase外壳


谢谢你耐心的回答,这对我很有帮助,我还想知道我是否想用java api连接Hbase,并在本地用java代码执行一些“CRUD”操作,独立模式能满足我的要求吗?我怎么能这么做?我已经有一些代码在这里,但只是不知道如何配置。我在谷歌上搜索了一下,但似乎没有什么例子。你能把你的代码放在这里,让我看看是否有什么问题吗?或者最好提出一个新问题,在那里我可以给你代码反馈。再次感谢,这里是我附加代码的新问题:谢谢,它面临这个问题,因为机器处于休眠状态。简单的流浪停顿;流浪汉解决了这个问题:)完全正确。重新启动
hbase
是解决此问题的简单方法。谢谢,设置export hbase_MANAGES_ZK=true对我有用
systemctl stop firewalld
/var/log/hbase 
1) Stop-hbase.sh
2) Start-hbase.sh