Hbase - hbase hbck介绍

原文地址:https://bbs.huaweicloud.com/blogs/353332

 

HBaseFsck(hbck)是一种命令行工具,可检查hbase集群的region一致性和表完整性的问题,同时可以修复损坏的集群数据

 

hbase hbck [options]

options:

 

 

 

-fixAssignments

使用场景:region不在线

hbck报错

ERROR: Region { meta => null, hdfs => hdfs://hacluster/hbase/data/default/xxxxxxxx/xxxxxxxxxxxxx, deployed => , replicaId => 0 } on HDFS, but not listed in hbase:meta or deployed on any region server

Tips:修复前,可以先检查下表region是否连续,如果连续,执行命令修复后,可能出现overlaps问题。

 

 

-fixMeta

使用场景:Meta表数据异常

hbck报错

ERROR: Region { meta => XXXXXXXXXXX,4150,1634403123676.xxxxxxxxxxxxxxxxxxx., hdfs => null, deployed => , replicaId => 0 } found in META, but not in HDFS or deployed on any region server.

 Tips:命令一般可以结合-fixAssignments一起使用:hbase hbck -fixMeta -fixAssignments tableName

 

 

-fixHdfsHoles

使用场景:Region不连续,中间存在空洞

hbck报错

ERROR: There is a hole in the region chain between 5980 and 6000.  You need to create a new .regioninfo and region dir in hdfs to plug the hole.

Tips:执行修复前,先查看是否有region不在线,如果有则先使用-fixAssignments修复

 

 

-fixHdfsOrphans

使用场景:表regioninfo丢失

hbck报错

 ERROR: Orphan region in HDFS: Unable to load .regioninfo from table XXXXXX

 in hdfs dir hdfs://hacluster/hbase/data/default/ XXXXXX /xxxxxxxxxxxxxxx!  It may be an invalid format or version file.  Treating as an orphaned regiondir.

Tips:丢块、人为删除,都可能导致该问题,多修复几次。

 

 

-fixTableOrphans

使用场景:表tableinfo丢失

hbck报错

TableInfoMissingException: No table descriptor file under hdfs://hacluster/hbase/data/default/XXXXXXX

Tips:丢块、人为删除,都可能导致该问题,一般都会修复失败,可以在相同版本集群建同名表,复制tableinfo进行恢复。

 

 

-fixhdfsOverlaps

使用场景:Region之间出现重叠的情况

hbck报错

ERROR: (region XXXXXX,994,1599460846542.xxxxxxxxxx.) Multiple regions have the same startkey: 994
ERROR: (region XXXXXX,994,1599543035805.xxxxxxxxxx.) Multiple regions have the same startkey: 994
ERROR: (regions XXXXXX,994,1599543035805.xxxxxxxxxx. and XXXXXX,998,1571500798247.xxxxxxxxxx.) There is an overlap in the region chain.

Tips:一般一次修复不成功,需要多执行几次。该修复可能影响业务(修复过程,会把重叠的region下线,合并为1个region)。

 

 

-sidelineBigOverlaps -maxOverlapsToSideline <N>

使用场景

  sidelineBigOverlaps:修复overlap问题过程中,允许跟其他region重叠次数最多的一些region不参与(修复后,可以把没有参与的数据通过bulk load加载到相应的region;maxOverlapsToSideline修复overlap问题过程中,一组里最多允许多少个region不参与

hbck报错:暂无

Tips:使用命令 hbase hbck -repair -sidelineBigOverlaps -maxOverlapsToSideline 10 tableName

 

 

-fixReferenceFiles

使用场景:修复残留的reference文件

hbck报错

ERROR: Found lingering reference file hdfs://hacluster/hbase4/data/default/XXXXXX/xxxxxxxxxx/F/3f7f9c436845499eaea025965d6528e3.75b81cdf8bd8e218f581dc274423be1c

Tips:暂无

 

 

-repair

使用场景:该命令是多个命令的集合,包含:

  • -fixAssignments
  • -fixMeta
  • -fixHdfsHoles
  • -fixHdfsOrphans
  • -fixHdfsOverlaps
  • -fixVersionFile
  • -sidelineBigOverlaps
  • -fixReferenceFiles
  • -fixTableLocks
  • –fixOrphanedTableZnodes

hbck报错:暂无

Tips:一般overlap问题,可以简单粗暴的直接repair

 

 

 

常用修复命令

# 检查hbase是否不一致
hbase hbck>/tmp/hbck.out
tail /tmp/hbck.out
# hbase hbck 常规修复
hbase hbck -fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOverlaps > /tmp/hbck.out
# hbase hbck repair修复
hbase hbck -repair
# dstool修复(暂略)

 

 

 

 

未完待续……

posted @   HOUHUILIN  阅读(444)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示