2.1 上的代码我记的不太清楚了,不过 region assign 相关 procedure 在 2.2 重新写了一遍,之前确实有 bug 很难搞定,常见的就是 region 不下线,或者一个 region 被 assign 到两台 RS 上,只能重启搞定。另外后来又在 2.3 上把存储 procedure 的部分重新实现了一遍,才算比较稳定。
所以 2.1 在大集群特别是有些过载的情况下跑 merge 确实有可能出 bug,hbck 的处理没啥问题,也只能这样搞。。。 邢* <xingxuem...@163.com> 于2023年3月31日周五 15:15写道: > > 感谢张老师的回复,我们后续对这张大表按照您的建议操作一下,再观察观察是否还有此类问题。然后我们之前也是由于region数量太多,手动操作过合并hbase集群的region,但是遇到了hole问题,想再麻烦您帮忙看一下。 > > > > 1、问题描述: > 手动合并两个region后出现hole,在用hbck2修复过程中出现region多分配问题。当时情况表现为hbase集群读写均无问题,但是在另外一个rs上出现了一个多余的region。此region在meta中无数据,hdfs上有目录但regioninfo缺失,且多余region对应的表compact和snapshot会失败,当时是把多余的region的rs上region迁移走,然后对rs进行了重启,重启完成后多余region消失了。 > > > > > > 2、操作过程 > > 合并region命令: > > merge_region > 'sdhz_phone_info_realtime,363:2H9S49dd1UNDbnX+3vVj7g==,1627405790553.ba670bd86dc51211e50bf05995f9b8c5.','sdhz_phone_info_realtime,371:1xxhPgZ9BuzE29InP4QrWA==,1627405790553.3f8854e2e437b0469ef735b08e3abd05.' > > > > hole问题处理过程: > > 使用hbck2修复 > > - 查询不一致原因:hbase hbck sdhz_phone_info_realtime > > - 修复元数据:hbase hbck -j hbase-hbck2-1.0.0-SNAPSHOT.jar > addFsRegionsMissingInMeta default:sdhz_phone_info_realtime > > - 重启master > > - 重新分配region:hbase hbck -j hbase-hbck2-1.0.0-SNAPSHOT.jar assigns > 23341c80a5bffbbbb8834bf1c6cdcc06 > > > > 多余region问题修复过程: > > 1. 关闭线上balance > > 2. 依次move rs-13上的 region > > 3. 测试迁移后的region是否可用 > > 4. 存在多余region的rs-13重启,重启完成后多余region消失 > > 5. rs-13解除授权,机器下线 > > > > 3、想得到解答的问题: > > 为什么手动合并region会出问题? > > hole问题使用hbck2修复的方式是否有误? > > > > > > > > >