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

HBase 表修复在线方式和离线方式

相关推荐