本篇内容主要讲解“hadoop hbase集群断电数据块被破坏无法启动怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hadoop hbase集群断电数据块被破坏无法启动怎么解决”吧!
十余年的淮上网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整淮上建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“淮上网站设计”,“淮上网站推广”以来,每个客户项目都认真落实执行。
集群机器意外断电重启,导致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
到此,相信大家对“hadoop hbase集群断电数据块被破坏无法启动怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!