HBase meta元数据恢复案例

举报
adadad 发表于 2020/11/18 09:45:57 2020/11/18
【摘要】 此文档包含:构造HBase 2.x Meta元数据丢失,丢失后hbase服务故障现象,以及恢复过程。

 

HBase 2.x Meta元数据恢复案例

 

一、        构造meta表数据文件块丢失

1)  meta表的数据文件选择一个文件,构造块丢失场景

image.png

2)  查找文件的块分布

image.png

 

3)  删除文件的所有文件块

 

 image.png

 image.png

4)  查询确认文件块已经丢失

 image.png

 

二、        问题现象

1)  重启HBase服务,服务启动卡主,一直报检查HMaster失败;

 

三、        问题定位过程

1)  查看HMaster健康检查日志如下,报meta不在线

image.png

 

2)  查看hbase原生界面,确认系统表都没有上线

 image.png

3)  查看HMaster的日志

image.png

 

4)  执行hbck检查

由于HMaster没有启动好,不能检查;

image.png

5)  执行fsck检查

如下发现meta的一个文件有丢失数据块

image.png

image.png

 

四、        解决过程

1.       停止HBase服务

 

2.       删除损坏文件

image.png

 

3.       启动hbase服务

服务启动失败,但后台进程已启动;查看Hbase原生界面发现系统表都没有上线;hbase shell进去查看meta如下,meta表中的数据不正常;

image.png

 

如下日志显示HMaster跳过了上线时跳过了下面表,最终HMaster初始化失败。

image.png

 

4.       停止HBase服务,添加配置:hbase.assignment.skip.empty.regions=false ,在启动服务;

 

5.       服务启动成功,hbase恢复

所有系统表和用户表已经上线,数据可查询;

image.png

 

五、        问题总结

1.       Meta表中存储的源数据信息,可以通过读取各表的tablesecregioninfo信息重建,如果文件丢失可以用下面命令修复

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

注:此命令执行时需要停止hbase服务;

 

2.       上面命令恢复的Meta元数据缺少部分行信息,说明表的region没有上线;当前案例中系统表的元数据也有问题,HMaster initialized失败,即使执行assignunassign也不能上线;

 

Meta表的信息说明:

info:regioninfo:该列对应的 Value 主要存储4个信息,即EncodedNameRegionNameRegionStartRowRegionEndRow

info:seqnumDuringOpen:该列对应的 Value 主要存储Region打开时的sequenceId

info:server:该列对应的 Value 主要存储Region落在哪个RegionServer上。

info:serverstartcode:该列对应的 Value 主要存储所在RegionServer的启动Timestamp

info:sn:该列对应的 value server serverstartcode 组成。

info:state:该列对应的 value 表示 Region 状态。

 

3.       添加如下配置,这样HMaster启动的时候就会尝试上线空region

hbase.assignment.skip.empty.regions=false

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。