HDFS 上 hbase.id 文件对应的 block 丢失或损坏导致 Hyperbase 启动失败的解决办法

内容纲要

概要描述


有时,HDFS 坏块或丢块会导致 hdfs 上 /hyperbase1/hbase.id 对应的 block 文件损坏或彻底丢失。由此导致 hyperbase 启动时启动不了,一直卡在如下图所示界面
file

详细说明


多次查看 hyperbase 的 pod,可以发现 hyperbase-master 的 pod 状态为 0/1,一直在 running、CrashLoopBackOff、Error 间重试
file

查看 /var/log/hyperbase1/hbase-hbase-master*.log 可以明显看到如下关键信息,可以看出 /hyperbase1/hbase.id 对应的 block 丢失

--
FATAL org.apache.hadoop.hbase.master.HMaster: Unhandled exception. Starting shutdown.
org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-839978718-172.22.39.7-1577884581081:blk_1073742293_1493 file=/hyperbase1/hbase.id
--
ERROR org.apache.hadoop.hbase.master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: HMaster Aborted
--

接着可以去所有的 DataNode 上 $ find / -iname "blk_1073742293_1493*" -print 2>/dev/null 确认是不是该 block 的副本已经全部丢失了。理论上该报错情况下应该是都丢失了。$ hdfs fsck /hyperbase1/hbase.id 检查也能看出来:The filesystem under path ‘/hyperbase1/hbase.id’ is CORRUPT

解决办法:

先删除 hdfs 上的 /hyperbase1/hbase.id 文件

集群未开启安全时:

$ export HADOOP_USER_NAME=hbase && hdfs dfs -rm -f /hyperbase1/hbase.id

集群开启安全的情况下:

$ kinit hbase
$ hdfs dfs -rm -f /hyperbase1/hbase.id

然后再去重启 hyperbase,hdfs 上 /hyperbase1/hbase.id 会自动生成

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。