我安装了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:
<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>
<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>
<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>
答案 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.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。
答案 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
答案 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外壳