记一次HBase无法正常启动,长时间RIT, 修复meta元数据不一致的问题

最近公司的服务器硬件出现了问题 ,期间暂停大数据平台作业服务,硬件维护完成后,重启了大数据平台服务。

Hbase完成启动,无法正常服务,版本1.2.0。查看Hbase管理后台,RegionServer的为0,Tables列表为空。查看HMaster的启动日志,报错如下:

client.RpcRetryingCaller (RpcRetryingCaller.java:callWithRetries(118)) - Call exception, tries=11, retries=31, retryTime=99796ms, msg=row ‘scores,’ on table ‘hbase:meta’ at region=hbase:meta,1.xxxxx, hostname=xxxxx,60020,1586948990258, seqNum=0

client.RpcRetryingCaller (RpcRetryingCaller.java:callWithRetries(118)) - Call exception, tries=11, retries=31, retryTime=99796ms, msg=row ‘scores,’ on table ‘hbase:meta’ at region=hbase:meta,1.1588230740, hostname=xxxx,60020,1586948990258, seqNum=0

排查了host的配置,正常。进入HDFS 文件系统查看HBase的目录,原先的表数据都还在。

执行 hbase hbck -fixMeta -fixAssignments  和 hbase hbck -repair 重启都无效果。

执行hdfs fsck检查Meta目录,发现meta表文件损坏,经过多次报错,反复处理,完成启动,步骤如下:

1、重新命名meta目录为meta_bak,  创建新目录meta, 启动HBase

2、“ERROR: There is a hole in the region chain between and . You need to create a new .regioninfo and region dir in hdfs to plug the hole”hdfs上面没有.regioninfo的region  执行 hbase hbck -fixHdfsOrphans

3、****“****ERROR:Multiple region have the same startkey“:   多个region 的startkeytg **执行 **hbase hbck -fixHdfsOverlaps

4、对新建的meta目录,元数据逆向修复,执行hbase hbck -fixMeta -fixAssignments

5、最后检查Hbase的状态OK即可, 执行 hbase hbck。

附上网上一个比较完整的修复流程:

在线修复

前提条件:HDFS fsck 确保HBase根目录下文件没有损坏丢失,如果有,应该先考虑修复/处理corrupt的block。

**步骤1:**hbase hbck 检查输出所以ERROR信息,每个ERROR都会说明错误信息。

**步骤2:**hbase hbck -fixTableOrphones 先修复tableinfo缺失问题,根据内存cache或者hdfs table 目录结构,重新生成tableinfo文件。

**步骤3:**hbase hbck -fixHdfsOrphones 修复regioninfo缺失问题,根据region目录下的hfile重新生成regioninfo文件。

**步骤4:**hbase hbck -fixHdfsOverlaps 修复region重叠问题,merge重叠的region为一个region目录,并从新生成一个regioninfo。

**步骤5:**hbase hbck -fixHdfsHoles 修复region缺失,利用缺失的rowkey范围边界,生成新的region目录以及regioninfo填补这个空洞。

**步骤6:**hbase hbck -fixMeta 修复meta表信息,利用regioninfo信息,重新生成对应meta row填写到meta表中,并为其填写默认的分配regionserver。

**步骤7:**hbase hbck -fixAssignment 把这些offline的region触发上线,当region开始重新open上线的时候,会被重新分配到真实的RegionServer上 , 并更新meta表上对应的行信息。

离线修复

前提条件:HDFS fsck确保hbase根目录下文件没有损坏丢失,如果有,应该先考虑修复/处理corrupt的block。

步骤: 执行如下命令即可:

hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair -fix

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值