HBase删除HFile文件Region无法上线处理
1、背景
HBase集群底层hdfs文件出现坏块无法恢复,删除了底层hdfs坏块文件HFile文件后,region无法上线。
2、问题排查
-
- 找到hbase 无法上线的region,在hbase shell中进行assign 'regionId',查看hbase主节点日志,找到该region分配的regionserver服务
- 查看regionserver服务的hbase日志,分析原因,发现部分文件找不到。找到文件不存在的region所在的regionserver。
- 上一步找到的regionserver,删除不存在的文件,重新reassgin恢复正常。
- 部分region存在的不存在的文件较多,找到不存在的文件对应的父region,使用通配符全部删除,重新reassgin。
3、总结
HBase在Region达到一定的阈值会进行split,由一个region分裂为两个region。但是最开始不是真正的数据迁移,通过reference文件指向原始的region的HFile文件。文件命名格式是 父region的HFile文件名.父region的名字。 由于删除了坏块文件,导致已经分裂的region找不到原始的HFile文件,所以region无法上线。删除不存在的文件的reference文件后,重新reassgin,region恢复正常。
参考连接
https://blog.youkuaiyun.com/wangyiyungw/article/details/82623426
https://blog.youkuaiyun.com/lvwenyuan_1/article/details/78579116