hadoop hbase集群断电数据块被破坏无法启动

大数据 Hadoop
集群机器意外断电重启,导致hbase 无法正常启动,抛出reflect invocation异常,可能是正在执行的插入或合并等操作进行到一半时中断,导致部分数据文件不完整格式不正确或在hdfs上block块不完整。

[[195722]]

集群机器意外断电重启,导致hbase 无法正常启动,抛出reflect invocation异常,可能是正在执行的插入或合并等操作进行到一半时中断,导致部分数据文件不完整格式不正确或在hdfs上block块不完整。

在网上查了一下相关资料,怀疑有可能是关闭前一些未提交的修改所存放的log文件数据写入一半文件不完整,故把hbase.hlog.split.skip.errors改成true进行尝试。

关于这个参数作用的解释:

当服务器奔溃,重启的时候,会有个回放的过程,把/hbase/WAL/下面记录的log都回放一遍,合并到每个region中,回放过程中如果有error发生,这个参数又是false,那么exception就会向外层输出,回放失败。

但是很遗憾,将此参数修改后hbase集群仍然无法正常启动。

然后就琢磨其他原因,先观察hbase启动时的60010监控页面,

发现部分region FAILED_OPEN错误,its007-meta表一共200个region,只启动成功199个。

似乎想到了什么,对了,很可能是这个region的数据文件格式不正确,那就先检查一下其在hdfs上的文件是否正常。

果不其然,观察hadoop的50070页面,会提示hadoop文件系统的具体路径上有两个数据块出错。

(关于hbase在hdfs上的目录相关文章链接:HBase在HDFS上的目录树)

解决方法:

1. 运行hadoop fsck / -files检查hdfs文件

2. 发现/hbase/oldWALs目录下有一个文件损坏,

运行hadoop fsck / -delete清除损坏的文件

3. 运行hbase hbck -details查看hbase概况,发现Table its007-meta有一个region加载失败

4. 运行hbase hbck -fixMeta尝试修复系统元数据表

5. 运行hbase hbck -fix尝试修复region数据不一致问题。

6. 再次运行hbase hbck -details发现问题仍然未修复,那个region仍然加载失败。

故直接将该region下出错的文件移走,暂时移至hdfs根目录

hadoop fs -move /hbase/data/default/its007-meta/fe6463cba743a87e99f9d8577276bada/meta/9a853fdbe13046fca194051cb9f69f9b /

fe6463cba743a87e99f9d8577276bada是region的名字

9a853fdbe13046fca194051cb9f69f9b是region下出错的HFile,有800k大小(注:一个region下可以有多HFile)

7. 运行hbase hbck -fix重新加载之前失败的region,至此完成修复,丢弃了出错的HFile

总结:

hbase在hdfs上一共两个文件损坏。(关于hdfs文件写入相关文章:hdfs文件写入相关概念)

一个是oldWALs下的,这个是存放一些没用的HLog文件的,这里有文件损坏,说明从WALs中转移没用的HLog写到oldWALs下时,写了一半断电导致hdfs上文件数据块出错;

另一个是region下一个HFile文件损坏,这个文件800k比较小,应该是从Memstore flush到HFile时,写了一半没写完导致其在hdfs上的文件数据块出错。

hbase region数据块出现问题可以先修复

查看hbasemeta情况

hbase hbck

1.重新修复hbase meta表

hbase hbck -fixMeta

2.重新将hbase meta表分给regionserver

hbase hbck -fixAssignments

如果修复失败,我们可以删除hdfs上的异常数据,删除META表中对应的region信息。

责任编辑:武晓燕 来源: oschina博客
相关推荐

2010-10-13 11:02:52

MySQL数据文件

2013-05-14 17:32:37

2013-11-22 09:57:03

hadoop1.2.1zookeeper-3hbase-0.94.

2014-11-27 13:59:34

OptimBluemixIBM

2016-11-09 14:16:39

HBase集群管理

2010-06-03 13:08:51

2021-04-13 08:24:28

网络攻击恶意软件网络安全

2010-06-03 19:38:26

Hadoop

2012-01-05 10:03:23

2011-12-07 16:11:50

Hadoop集群搭建

2016-10-27 09:37:10

Hadoop集群配置

2010-05-24 14:59:29

Hadoop集群

2014-05-20 10:24:44

2012-09-10 15:18:11

云梯淘宝大数据

2011-08-29 10:15:13

FacebookHadoopHBase

2010-06-03 14:08:56

Hadoop创建Hba

2013-06-14 14:17:36

分布式Hbase管理和监控

2011-07-27 15:09:04

2011-10-19 09:35:36

Hadoop数据集群

2020-11-19 10:30:28

Linux
点赞
收藏

51CTO技术栈公众号