1 基础知识
1.1 Region的错误原因
– 由于HBase具有自动分片功能(Automatic sharding)
– 区域(regions)随着数据的增长会自动拆分或重新分布(Region是HBase集群分布数据的最小单位)
– 区域拆分的大小依据来源于变量“hbase.hRegion.max.filesize”,变量默认值10GB
– 区域拆分过程中,由于各种原因可能导致分片过程没有按预期完成,此时需要人工干预
1.2 错误的检查与处理命令
sudo -u hbase hbase hbck -h
可见如下输出,
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
20/05/05 13:28:16 INFO Configuration.deprecation: fs.default.name is deprecated. Instead, use fs.defaultFS
Usage: fsck [opts] {only tables}
where [opts] are:
-help Display help options (this)
-details Display full report of all regions.
-timelag Process only regions that have not experienced any metadata updates in the last seconds.
-sleepBeforeRerun Sleep this many seconds before checking if the fix worked if run with -fix
-summary Print only summary of the tables and status.
-metaonly Only check the state of the hbase:meta table.
-sidelineDir HDFS path to backup existing meta.
-boundaries Verify that regions boundaries are the same between META and store files.
-exclusive Abort if another hbck is exclusive or fixing.
-disableBalancer Disable the load balancer.
Metadata Repair options: (expert features, use with caution!)
-fix Try to fix region assignments. This is for backwards compatiblity
-fixAssignments Try to fix region assignments. Replaces the old -fix
-fixMeta Try to fix meta problems. This assumes HDFS region info is good.
-noHdfsChecking Don't load/check region info from HDFS. Assumes hbase:meta region info is good. Won't check/fix any HDFS issue, e.g. hole, orphan, or overlap
-fixHdfsHoles Try to fix region holes in hdfs.
-fixHdfsOrphans Try to fix region dirs with no .regioninfo file in hdfs
-fixTableOrphans Try to fix table dirs with no .tableinfo file in hdfs (online mode only)
-fixHdfsOverlaps Try to fix region overlaps in hdfs.
-fixVersionFile Try to fix missing hbase.version file in hdfs.
-maxMerge When fixing region overlaps, allow at most regions to merge. (n=5 by default)
-sidelineBigOverlaps When fixing region overlaps, allow to sideline big overlaps
-maxOverlapsToSideline When fixing region overlaps, allow at most regions to sideline per group. (n=2 by default)
-fixSplitParents Try to force offline split parents to be online.
-ignorePreCheckPermission ignore filesystem permission pre-check
-fixReferenceFiles Try to offline lingering reference store files
-fixEmptyMetaCells Try to fix hbase:meta entries not referencing any region (empty REGIONINFO_QUALIFIER rows)
Datafile Repair options: (expert features, use with caution!)
-checkCorruptHFiles Check all Hfiles by opening them to make sure they are valid
-sidelineCorruptHFiles Quarantine corrupted HFiles. implies -checkCorruptHFiles
Metadata Repair shortcuts
-repair Shortcut for -fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps -fixReferenceFiles -fixTableLocks -fixOrphanedTableZnodes
-repairHoles Shortcut for -fixAssignments -fixMeta -fixHdfsHoles
Table lock options
-fixTableLocks Deletes table locks held for a long time (hbase.table.lock.expire.ms, 10min by default)
Table Znode options
-fixOrphanedTableZnodes Set table state in ZNode to disabled if table does not exists
Replication options
-fixReplication Deletes replication queues for removed peers
2 最佳实践
2.1 检查表
sudo -u hbase hbase hbck > /tmp/hbase-hbck.txt
执行完成后,使用如下命令读取提示信息,
less /tmp/hbase-hbck.txt
可见如下错误提示
ERROR: There is a hole in the region chain between 8B9CH20R23 and 8BBFA24C43. You need to create a new .regioninfo and region dir in hdfs to plug the hole. ERROR: Found inconsistency in table table1
如果以上觉得信息太多,且知道是特定的表故障,可指定表检查,
sudo -u hbase hbase hbck table1
2.2 修复表
sudo -u hbase hbase hbck -repairHoles table1
参阅文档
======================
hbase hbck命令的使用
———————-
https://community.cloudera.com/t5/Community-Articles/HBase-HBCK-In-Depth/ta-p/245214
http://archive.cloudera.com/cdh5/cdh/5/hbase-0.98.6-cdh5.3.2/book/hbck.in.depth.html
如何修复Region的孔洞问题
———————–
https://www.jianshu.com/p/d5697506741e
https://blog.csdn.net/qq_31598113/article/details/78926596
http://hbasefly.com/2016/09/08/hbase-rit/
没有评论