一、起因
一台服务磁盘故障,该服务器上的相关角色有:
- HBase Master
- HBase RegionServer
- HDFS NameNode
- HDFS JournalNode
- HDFS DataNode
从而导致 HBase 表在 HDFS 上有部分数据块丢失。在删除 HDFS 上 atlas 表数据时未删除干净导致的 Region in transition
二、处理过程
1、发现问题
1)Atlas 不可用,查看日志报错如下:
2)重启 atlas 并查看 Hbase 表发现表无法重建且仍报以上错误
3)查看 HBase Master 日志发现有丢失数据块
2、解决问题
1)由于 HDFS 上该部分数据无备份,且考虑到血缘数据可以回复,所以直接删除了这部分数据。
# 通过该命令查找到丢失的数据块
hdfs fsck /hbase/data -files -blocks -locations |grep MISSING
# 删除上一步中查找出来的目录
2)删除 HBase 中 atlas 表相关的元数据
# 由于不知道什么原因,我们 HBase 中 atlas 的表已经不存在,但元数据信息还存在,所以我们需要将元数据信息进行删除。
# 通过 hbase shell 进入 hbase
# 执行命令查找 atlas 相关表
scan 'hbase:meta'
# 通过一下命令删除该部分表的元数据
deletaall 'hbase:meta', 'rowkey'
3)发现HBase Master 报错如下:
经查阅资料得知 HBase 长时间出现RIT,并且发生RIT的Region是已经删除了的Hbase表,表未删除的情况下执行assgin可以消除该问题。但表删除后,执行assgin 会提示超时,表的Region不存在无法执行 该命令
参考链接:Region in transition (永久RIT) 异常解决_彭三年的博客-CSDN博客
4)解决 STUCK Region-In-Transition rit=OPENING
原文中需要删除 HBase 中的 meta 信息,我们在步骤 2 中已经处理过,这里就无需再做处理,只需做如下操作:
- 将 /hbase/MasterProcWALs/ 下的文件删除或移动至其他目录
- 重启 Hbase Master
5)重启 Apache Atlas 查看日志
三、恢复验证
- 查看 HBase 中的 atlas 相关表,发现已经自动创建
- 查看 Kafka 中的 atlas 相关 topic ,发现已经自动创建
- 查看 ES 中的 atlas 相关 索引 ,发现已经自动创建
- 通过域名访问 Atlas WebUI,无报错
- 登录 Atlas 并查看表血缘信息,无报错且准确