今天升级集群的时候遇到了这个问题。解决问题的过程中,借机也巩固了下对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.serv