Hbase中Hmaster启动失败的原因

在启动 Hbase 后,发现没有 Hmaster 进程的现象,

并且导致 Hbase shell 启动后操作报 Can't get master address from ZooKeeper; znode data == null 的错误

以及停止 Hbase 时出现 stopping hbasecat: /tmp/hbase-xxxxx-master.pid: 没有那个文件或目录 的错误

于是就开始寻找启动失败的原因, 最有效的方法是仔细检查 logs 下的报错日志

1.没有找到 /tmp/hbase-xxxxx-master.pid 文件

hbase 默认注释掉 HBASE_PID_DIR,而 hbase 默认把 pid 文件放在 /tmp 临时目录下, 这个目录可能会被系统删除等原因无法找到, 解决办法是把 hbase/conf/hbase-env.sh 中的 HBASE_PID_DIR 属性打开修改为非临时路径, 例如 opt/module/hbase/pids, 然后重启 zookeeper 和 Hbase 即可

2.zookeeper /hbase 节点的历史数据不匹配

需要删除 zookeeper 节点上的 hbase 数据, 以及 zookeeper 根目录下的 hbase 数据目录

zkCli.sh -server master:2181
ls /
[/hbase , /zookeeper]
rmr /hbase

删除 zookeeper 根目录下的 hbase 数据目录下除了 myid 以外的文件, 是 conf/hbase-site.xml 中的 hbase.zookeeper.property.dataDir 属性值

重启 zookeeper 和 Hbase 即可

3.时钟不同步, 超过了默认的30秒限制或自己设定的时间

4.zookeeper 出问题了

5.hdfs 和 hbase 配置的端口不匹配
HBase/conf/
core-site.xml hdfs://master 要与
hbase-site.xml 文件中 hbase-rootdir hdfs://master:9000/hbase 相同

最后成功启动了

你可能感兴趣的:(HBase)