1.报错如下:
hbase(main):001:0> list
ERROR: Can't get master address from ZooKeeper; znode data == null
Here is some help for this command:
List all tables in hbase. Optional regular expression parameter could
be used to filter the output. Examples:
hbase> list
hbase> list 'abc.*'
hbase> list 'ns:abc.*'
hbase> list 'ns:.*'
2. 解决方法 – 四种
注:四种方法的解决范围依次增加,恢复的可能性依次增加,可以依次尝试。
-
关闭hbase,然后重启(最简单的尝试)
-
查看/tmp目录权限,并将其拥有者修改为 hadoop:
sudo chown -R hadoop /tmp
关闭 hbase后,重启启动。
- 检查 hbase-site.xml配置
主要配置:hbase.zookeeper.property.dataDir,指定写入zookeeper信息的目录
博主的配置如下:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>30000</value>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://master:6000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
</configuration>
检查无误后
- 删除 HDFS上的 /hbase目录
- 删除 master、slave节点 /home/hadoop/zookeeper 目录
- 删除 master、slave节点 hbase安装目录下 logs目录下的日志文件(因为上面操作为清空所有的Hbase启动信息,以前的日志文件几乎没有什么用处,当然这是学习情况下,工作中还是做好备份)
上述三步做完后,最好重启所有机器,重启后开启HDFS,开启HBase。
- 格式化 HDFS(实在不能解决问题,但也是最不推荐的方法)