Hadoop集群升级失败回滚策略

因为需要使用Hadoop与hbase结合使用,所以需要为hadoop hdfs升级使用append写模式。需要对现有的hadoop 0.20.1 升级至0.20.205.0; 升级过程简单的使用 hadoop namenode -upgrade 从 -18 version => -32version(这个是dfs/name/current/VERSION).但我们发现0.20.205跟hive不兼容,所以又安装facebook的hadoop版本(-30版本)。

整个升级流程简单来说就是:  dfs/name/current/VERSION  -18 => -32  =>  -30. 升级再回滚的过程。

二. namenode错误处理过程

1。启动namenode失败(第一个错误):

org.apache.hadoop.hdfs.server.common.IncorrectVersionException: Unexpected version of storage directory /data/hadoop-tmp/hadoop-hadoop/dfs/name. Reported: -32. Expecting = -30.           at org.apache.hadoop.hdfs.server.common.Storage.getFields(Storage.java:662)           at org.apache.hadoop.hdfs.server.namenode.FSImage.getFields(FSImage.java:741)           at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:238)           at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:227)           at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:453)           at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:158)           at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:386)           at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:361)           at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:274)           at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:385)           at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1419)           at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1428)  

解决办法:

在namenode节点运行:

hadoop namenode -rollback  

将-32版本回滚至 -18版本

2。继续启动namenode(第二个错误):

org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /data/hadoop-tmp/hadoop-hadoop/dfs/name is in an inconsistent state: file VERSION has image MD5 digest when version is -18  

解决办法:

将dfs/name/current/VERSION中的 imageMD5Digest 注释掉,不进行MD5完整性检查。

3。再将升级-18 => -30版本

hadoop namenode -upgrade  

这样namenode已经启动成功。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/800628f4647edf5f515f5216ccb7476c.html