hbase shell 进行list、scan等操作报错,一系列解决方案
报错信息:ERROR: Can’t get master address from ZooKeeper; znode data == null
在网上找的解决方案:
先把zookeeper、hbase、Hadoop全停止,按顺序先重启hadoop,再启动zookeeper,再启动集群,
最后启动Hbase时,首先启动HRegionserver,然后再启动HMaster
发现依然报错。
发现HMaster在启动一段时间后自动停止并报错
查看hbase目录下log目录下master的日志信息,发现报错
发现关键信息:
[hdfs://hadoop62:9000/hbase098/WALs/hadoop64,60020,1618906454340-splitting]
发现hadoop中 磁盘文件目录下 /hbase098/WALs/可能有一个hadoop64-splitting文件。
WALs这个文件夹中存放着hbase在hdfs上的日志,而splitting这个日志是切割文件中途的日志,如果存在这个日志说明之前有过hbase集群中某个服务器hbase出现异常,在非正常情况下中断了,这时候一操作hbase就会去读取这个中断状态的文件,但是读取和当前不匹配就出现异常,HMaster就会消失。
解决办法
查看发现确实有一个hadoop64子节点的-splitting文件
hadoop fs -du /hbase098/WALs/ —查看hdfs文件目录
执行下面命令,删除splitting文件:
hadoop fs -rmr /hbase098/WALs/*-splitting
问题解决!HMaster不再出现一段时间后停止,当然我的情况不一定适用于所有这种情况,也有可能是zookeeper集群的问题,具体要看log是否有报错,有别的情况或者发现问题,欢迎在评论区提议,谢谢。