出现问题的原因
Hadoop中报错,集群中某节点的一块磁盘损坏了,运维修复后,hbase出现了region不一致的情况。
修复HBCK2
-
首先查看web ui中被lock的producer,先释放父region使用
bypass -or pid
,再释放子producer使用bypass -o id
-
查看home界面拿到regionId,对其重新分配assigns -o
-
最后还是会剩余一些region无法修复,因为是磁盘损坏了,查看HDFS文件是否坏块
hdfs fsck -list-corruptfileblocks
,发现有大量的坏块,过滤一下hdfs fsck -list-corruptfileblocks |grep hbase
,存在hbase的坏块,所以就需要修复或清除坏块, -
修复HDFS坏数据
hdfs debug recoverLease -path 路径 -retries 重试次数
hdfs debug recoverLease -path /hbase_v3/data/default/table_name/78767936d6944f611fcde45bfd78119e/S/096345440ac549fcbac3d767431941ed -retries 5
命令:
bypass:-o id -or pid
hbase hbck -j hbase-hbck2-1.1.0-SNAPSHOT.jar bypass -or 205426
hbase hbck -j hbase-hbck2-1.1.0-SNAPSHOT.jar bypass -o 432521
assigns: 可以加-skip跳过版本检查
hbase hbck -j hbase-hbck2-1.1.0-SNAPSHOT.jar assigns -o 835955c88c1f999b3fa7ec7f4eef92bf
如果无法修复,看情况进行删除
hdfs fsck / -delete # 删除HDFS坏块,会将所有坏块全部删除