本文主要是介绍hbase2.x orphan regions on filesystem(region丢失)问题修复,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
orphan regions on filesystem
问题说明:表目录下存在region未上线问题,也就是说这些region下的数据你是访问不到的
可以通过主master web页面的HBCK Report查看未上线Region
也可以通过hbck2工具查看未上线Region
# 查看指定表
hbase hbck -j $HBASE_HOME/lib/hbase-hbck2-1.3.0-SNAPSHOT.jar addFsRegionsMissingInMeta default:tableName
# 查看命名空间下所有表
hbase hbck -j $HBASE_HOME/lib/hbase-hbck2-1.3.0-SNAPSHOT.jar addFsRegionsMissingInMeta default
解决方案有两种:
1、使用hbck2修复工具指定region上线
2、使用hbase自带的工具LoadIncrementalHFiles 将region数据加载到表中
解决步骤
方法1、使用hbck2修复工具指定region上线
使用assigns操作将检查出来未上线的region上线,一次可以上线多个region,用空格隔开,如果返回不是[-1],说明上线成功。
hbase hbck -j $HBASE_HOME/lib/hbase-hbck2-1.3.0-SNAPSHOT.jar assigns e800be33637ef611b3a5fc05f713d8f0
方法2、使用hbase自带的工具LoadIncrementalHFiles 将region数据加载到表中
第一种方法如果失败,可以尝试这个方法,他会将指定region目录下的所有数据导入到指定的表中。
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles "/tmp/hbase-loaddata/e800be33637ef611b3a5fc05f713d8f0/" "tableName"
额外说明下,使用第一种方法时,如果需要上线的region是从其他表拷贝过来的数据目录,在region上线后很容易产生region重叠(region overlap)问题,也就是region范围发生了交叉。解决方案:https://blog.csdn.net/DraGon_HooRay/article/details/128588922
这篇关于hbase2.x orphan regions on filesystem(region丢失)问题修复的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!