记一次OBJECTS元数据表处于RIT的解决办法

最近一客户环境由于Hadoop故障,恢复时出现“_MD_".OBJECTS处于RIT状态,且长期不能恢复。使用Trafodion用户执行HBCHECK输出如下,

HBase is available!

HBase version: 1.1.2.2.4.3.0-227
HMaster: namenode-2.esg.local,16000,1568772195966

Number of RegionServers available:4
RegionServer #1: datanode-3.esg.local,16020,1568772200461
RegionServer #2: datanode-4.esg.local,16020,1568772200097
RegionServer #3: datanode-2.esg.local,16020,1568772200709
RegionServer #4: datanode-1.esg.local,16020,1568772201234

Number of Dead RegionServers:0
Number of regions: 31014
Number of regions in transition: 1
RegionInTransition: TRAF_RSRVD_1:TRAFODION._MD_.OBJECTS,,1529534107727.e5b72fdd54857972797d8c6583964d0a. state=OPENING, ts=Tue Sep 17 22:12:38 EDT 2019 (420s ago), server=null
Average load: 7753.5

RegionInTransition: TRAF_RSRVD_1:TRAFODION._MD_.OBJECTS,1529534107727.e5b72fdd54857972797d8c6583964d0a. state=OPENING, ts=Tue Sep 17 22:12:38 EDT 2019 (420s ago), server=null 表示TRAFODION._MD_.OBJECTS处于RIT状态。

经过一番尝试与努力之后,问题得以解决,在此分享一下尝试过的方法,仅供参考。
方法一
怀疑是HBase 自动split功能导致,把split关闭。方法为:修改split策略从org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy为org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy,将hbase.hregion.max.filesize从默认的10G调整为100G。
重启HBase,验证问题仍然存在。

方法二
移除备份HBase的WAL目录,
hadoop fs -mkdir /hbase-wal-bak20190918
hadoop fs -mv /apps/hbase/data/WALs/* /hbase-wal-bak20190918/
完成以上命令后重启HBase,验证问题仍然存在。

方法三
手动assign表的region,
hbase(main):002:0> assign ‘e5b72fdd54857972797d8c6583964d0a’
完成后验证问题仍然存在。

方法四
(注:此步骤可能导致数据丢失,生产环境慎用)
删除表对应的recovered.edits
hadoop fs -rmr /apps/hbase/data/data/TRAF_RSRVD_1/TRAFODION._MD_.OBJECTS/e5b72fdd54857972797d8c6583964d0a/recovered.edits
重启HBase后,问题消失。

完成以上步骤后再执行hbcheck,输出如下,

HBase is available!

HBase version: 1.1.2.2.4.3.0-227
HMaster: namenode-1.esg.local,16000,1568791177953

Number of RegionServers available:4
RegionServer #1: datanode-1.esg.local,16020,1568791183192
RegionServer #2: datanode-2.esg.local,16020,1568791182670
RegionServer #3: datanode-4.esg.local,16020,1568791182598
RegionServer #4: datanode-3.esg.local,16020,1568791182581

Number of Dead RegionServers:0
Number of regions: 31015
Number of regions in transition: 0
Average load: 7753.75

方法五
有时候,步骤四操作完成后问题可能依然存在,zookeeper下面可能还存在RIT的znode节点,我们需要去zookeeper-client中把对应的RIT删除。

[zk: datanode-2.esg.local:2181,datanode-1.esg.local:2181,datanode-3.esg.local:2181(CONNECTED) 3] ls /hbase-unsecure/region-in-transition
[e5b72fdd54857972797d8c6583964d0a]
[zk: datanode-2.esg.local:2181,datanode-1.esg.local:2181,datanode-3.esg.local:2181(CONNECTED) 4] rmr /hbase-unsecure/region-in-transition

方法六
使用hbase hbck来修复RIT的问题,
先命令检查命令来检查不一致的状态,

hbase hbck -details TRAF_RSRVD_1:TRAFODION._MD_.OBJECTS

然后使用以下命令来修复不一致的问题,

hbase hbck -fixAssignments TRAF_RSRVD_1:TRAFODION._MD_.OBJECTS

综上,方法四、五、六,可以解决问题的机率比较大,但方法四有丢数据的风险。在生产环境, 我们一般采用方法五结合方法六来处理,如果未果,再加上重启HBase,应该可以解决大部分情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数据源的港湾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值