hbase查询报错unable to find region for

某天由于集群资源不足。hbase大面积 region server   负载爆炸卡死,隔天发现部分查询报错

 集群中一张表某些查询找不到region

尝试了重启集群和滚动重启集群,考虑滚动重启的过程会把regionserver上的region迁出和迁入。试试能不能修复,果断的修复失败。因为迁出和迁入并不会改变region本身。只是迁出迁入而已

尝试 hbase hbck -details 'hbsxx_bsdb:taj_xxx_ktgg'看一下状态

发现

hbck报错 inconsistencies detected  

看了一下web ui的HBCK report 

有2个hole 和12个overlaps

估计是元数据出问题了

尝试修复

首先需要安装hbck工具 自带那个只能看不能操作 ,hbase2已经废弃了hbck这个组件,HBCK2已经被剥离出HBase成为了一个单独的项目,如果你想要使用这个工具,需要根据自己HBase的版本,编译源码。

其GitHub地址为:https://github.com/apache/hbase-operator-tools.git

eec005931210b4ad8eb54bbcf031db51.png

在pom中将hbase版本换成自己实际的hbase2.x版本,项目根目录下运行打包命令:

mvn clean install -DskipTests
打包完成后,是有多个jar包的,将自己需要的hbck2取出来hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.0.0-SNAPSHOT.jar。

cdh的话需要从官网下载 https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/admin_hbase_hbck.html

执行

hbase hbck -j /path/hbck2.jar addFsRegionsMissingInMeta  hbxxxsdb:taj_n04xxxktgg

 果断没卵用 

 然后又执行

 hbase hbck -j /hbase-hbck2-<version>.jar extraRegionsInMeta --fix hbxxxsdb:taj_n04xxxktgg

返回给我一个 No mismatching regions this table is good  也无效

尝试用别的命令 

hbase hbck -j hbase-hbck2-<version>.jar filesystem --fix hbxxxsdb:taj_n04xxxktgg

看到没有一秒结束,感觉可能有用,结果挂了一个多小时也没反应。失败

hbase hbck -j hbase-hbck2-<version>.jar  extraRegionsInMeta --fix hbxxxsdb:taj_n04xxxktgg

仍然提示我  No mismatching regions this table is good  无效

回过头再去hbase 的ui上查

和之前HBCK report上的对了一下 发现报问题那个region为空 ,决定把这个region 跟别的region合并掉。web 上hole 少了一个 ,但是命令行的hbck 没有变化 还是提示我有一个矛盾region

通过online_merge热合并Region

hbase shell  
merge_region '39erijidsfd8s098fen32j3i8d9','48jfidnxoskd023843257822j3i'

Region的hash值就是Region名称的最后那段在两个.之间的字符串部分

但是因为没有hole了 决定再次get测试一下,果断的返回了一个正常找不到rowkey的空返回。不再报错了 。随后让开发测试。开发反馈可以正常查询了

猜你喜欢

转载自blog.csdn.net/h952520296/article/details/130529849