今天升级集群的时候遇到了这个问题。解决问题的过程中,借机也巩固了下对namenode启动过程的理解。这个问题网上几乎没查到好的解决办法,Google出来的办法说让Recovery,对已经有很大数据量的线上集群来说,风险太大,不可取。所以只能自己读着源码一步一步分析,终于还是找到了解决方法.
问题描述:
因为要升级集群,所以先停服务-->做升级-->重启服务。但是在重启服务的时候,standby namenode启动失败,每次都是先启动成功,然后在加载元数据的时候失败,shutdown. 报错如下:
<span style="font-family:Microsoft YaHei;font-size:12px;">2015-07-15 16:26:44,305 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
java.io.IOException: There appears to be a gap in the edit log. We expected txid 176531929, but got txid 176533587.
at org.apache.hadoop.hdfs.server.namenode.MetaRecoveryContext.editLogLoaderPrompt(MetaRecoveryContext.java:94)
at org.apache.hadoop.hdfs.server.namenod

在升级Hadoop2.0集群时遇到namenode启动失败,报错'There appears to be a gap in the edit log'。常规的解决办法风险过高,通过阅读源码发现问题是由于journalnode上的edits数据丢失。解决方案是找到丢失的edit记录,从active namenode复制到所有journalnode,避免数据丢失和recovery操作。
最低0.47元/天 解锁文章
1536

被折叠的 条评论
为什么被折叠?



