HBase 不一致表现为:
region不一致:当一个region被分配到多个regionserver或者没有regionserver持有该region时,则产生region不一致;
表不一致:当某个表的多个region行键有重叠时出现表不一致。
一致性检查:
hbase hbck
# Status:OK,表示没有发现不一致问题。
# Status:INCONSISTENT,表示有不一致问题。
一致性修复:
注意:region不一致可以在线修复,表不一致修复起来比较复杂,需先停止HBase的读写操作。
不正确的分配 这是由于.META.表里保存了region的错误信息。有三种可能:region被分配给了多个regionserver,region被错误的分配给了一
个regionserver但却由另一个regionserver提供服务,region存在于.META.中但没有被分配给任何regionserver。这种不一致通过如下命令修复
hbase hbck -fixAssignments
失踪或多余的region 如果HDFS保存了.META.表里没有记录的region,或者.META.里保存了HDFS中没有的region,则出现不一致,则通过如下命令修复
hbase hbck -fixMeta
修复region不一致的风险比较低,可以通过如下命令打包运行
hbase hbck -repairHoles
region 元数据丢失 每个region持有一个.regioninfo 如果该文件丢失,且.META.表里也没有保存该region的记录,则使用如下命令收集
一个丢失的.regioninfo文件的region
hbase hbck -fixHdfsOrphans
修复表不一致比较复杂,需仔细阅读在线文档,根据实际情况处理,且需要现在测试环境下进行充分的实验。