在启动 Hbase 后,发现没有 Hmaster 进程的现象,
并且导致 Hbase shell 启动后操作报 Can't get master address from ZooKeeper; znode data == null 的错误
以及停止 Hbase 时出现 stopping hbasecat: /tmp/: 没有那个文件或目录 的错误
于是就开始寻找启动失败的原因, 最有效的方法是仔细检查 logs 下的报错日志
1.没有找到 /tmp/ 文件
hbase 默认注释掉 HBASE_PID_DIR,而 hbase 默认把 pid 文件放在 /tmp 临时目录下, 这个目录可能会被系统删除等原因无法找到, 解决办法是把 hbase/conf/ 中的 HBASE_PID_DIR 属性打开修改为非临时路径, 例如 opt/module/hbase/pids, 然后重启 zookeeper 和 Hbase 即可
/hbase 节点的历史数据不匹配
需要删除 zookeeper 节点上的 hbase 数据, 以及 zookeeper 根目录下的 hbase 数据目录
-server master:2181
ls /
[/hbase , /zookeeper]
rmr /hbase
删除 zookeeper 根目录下的 hbase 数据目录下除了 myid 以外的文件, 是 conf/ 中的 属性值
重启 zookeeper 和 Hbase 即可
3.时钟不同步, 超过了默认的30秒限制或自己设定的时间
出问题了
和 hbase 配置的端口不匹配
HBase/conf/
hdfs://master 要与
文件中 hbase-rootdir hdfs://master:9000/hbase 相同