HBase 表修复在线方式和离线方式
一、在线修复
1.1 使用检查命令
$ ./bin/hbase hbck
该命令可完整修复 HBase 元数据信息;存在有错误信息会进行输出;
也可以通过如下命令查看详细信息:
$ ./bin/hbase hbck -details
1.2 修复 TableInfo 缺失
使用如下命令:
$ ./bin/hbase hbck -fixTableOrphones
根据内存cache或者hdfs table 目录结构,重新生成tableinfo文件!
1.3 修复regioninfo缺失
根据region目录下的hfile重新生成regioninfo文件
$ ./bin/hbase hbck -fixHdfsOrphones
1.4 修复region重叠
merge重叠的region为一个region目录,并从新生成一个regioninfo。
$ ./bin/hbase hbck -fixHdfsOverlaps
1.5 修复region缺失
利用缺失的rowkey范围边界,生成新的region目录以及regioninfo填补这个空洞!
$ ./bin/hbase hbck -fixHdfsHoles ,
1.6 修复meta表信息
利用regioninfo信息,重新生成对应meta row填写到meta表中,并为其填写默认的分配regionserver
$ ./bin/hbase hbck -fixMeta
1.7 出发上线
把这些offline的region触发上线,当region开始重新open上线的时候,会被重新分配到真实的RegionServer上 , 并更新meta表上对应的行信息。
hbase hbck -fixAssignment
二、离线修复
离线修复的前提条件:HDFS fsck确保hbase根目录下没有文件损坏和丢失。如果有,应该先考虑修复/处理 corrupt 的 block 块。
使用如下命令:
$ ./bin/hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair