HBase1.x运维:Multiple regions have the same endkey报错处理

微信公众号:大数据开发运维架构

关注可了解更多大数据相关的资讯。问题或建议,请公众号留言;

如果您觉得“大数据开发运维架构”对你有帮助,欢迎转发朋友圈

从微信公众号拷贝过来,格式有些错乱,建议直接去公众号阅读


软件版本:

    hadoop2.7.3

    hbase1.2.5

    zookeeper3.4.6

1.问题描述:

  生产HBase集群由于批量导入20亿数据之后,集群上产生了很多的region,各个Regionserver上的region负载已经达到了1200,很多数据表的region已经不在线,在手动执行major compact之前没有用hbase hbck命令进行集群状态检查和修复,直接执行大合并脚本进行了region的合并,等执行完大合并之后再去执行hbase hbck的时,输出以下报错信息:

ERROR: (region TABLE_NAME, rowkey_value, region_name_1) Multiple regions have the same start key: rowkey_value 
ERROR: (region TABLE_NAME, rowkey_value, region_name_2) Multiple regions have the same start key: rowkey_value 
ERROR: (regions Table_Name, rowkey_value, region_name_1 and Table_Name, rowkey_value, region_name_2) There is an overlap in the region chain. 
ERROR: Found inconsistency in table TABLE_NAME

2.问题分析

    产生这种问题可能有以下两种情况:

1).整个集群由于region负载过高,数据表的部分region由于某些原因没有上线,通过hbase hbck 相关的修复命令进行了修复,再次重启后region原来的region又可以重新上线,导致两个region重叠(个人觉得这种可能性比较小)。

2).整个集群由于region负载过高,数据表的部分region由于某些原因没有上线,我没有进行hbase hbck健康检查,直接运行了脚本进行了大合并,导致某些Region在合并过程中,生成了新的region,而原来的两个region没有删除成功,导致有些region的startkey或者endkey重叠的现象。

    下面我从生产环境的截图,为了方便理解,我对图中的Region进行了简单的标注,可以看出两个region2、region3的endkey都有c4,而region2的startkey和region1是连续的,region3的startkey与region1是不连续的,这里说明region3应该是合并之前应该删除而未删除的信息,存在冗余。

3解决方案:

1).需要删除region3在hbase:meta对应的数据,在hbase:meta表中,rowkey对应的就是region的ENCODED_REGIONNAME名称,先查看下:

    由图可知,meta表中有该region有6列,直接使用delete删除,该rowkey对应的6列数据即可,删除命令:

delete 'hbase:meta','region名称','列名称'

2).删除meta表中的元数据后,还需要从hdfs上删除,该有问题的region对应的hdfs目录,如不删除,重启hbase,通过hbase hbck -fixMeta等命令生成元数据时,会重新生成,删除命令。

hadoop fs  -rm -r -f /apps/hbase/data/data/命名空间/表名/region名

3).为了保险起见,我这里还删除了HBase在zookeeper上的znode缓存数据,让他下次重启重新生成。

4).重启hbase,可通过界面查看该表已经不存在重叠的region,使用hbase hbck查看hbase的状态,状态为OK,问题解决。

 

  如果觉得我的文章能帮到您,请关注微信公众号“大数据开发运维架构”,并转发朋友圈,谢谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾米球源码

您的鼓励将是我们创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值