分享

我的版本是从Hadoop1.0,重新安装2.0很麻烦,不知道能不能升级Hadoop2.x

rsgg03 2013-12-7 18:38:25 发表于 异常错误 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 7675
我的版本是从Hadoop1.0,重新安装2.0很麻烦,不知道能不能升级Hadoop2.x
欢迎大家如about云官方群371358502,更新咨询,更新资源,随时关注

已有(2)人评论

跳转到指定楼层
gefieder 发表于 2013-12-7 18:41:38
 在《从Hadoop1.x集群升级到Hadoop2.x步骤》文章中简单地介绍了如何从Hadoop1.x集群升级到Hadoop2.x,那里面只讨论了成功升级,那么如果集群升级失败了,我们该如何从失败中回滚呢?这正是本文所有讨论的。本文将以hadoop-0.20.2-cdh3u4升级到Hadoop-2.2.0升级失败后,如何回滚。
  1、如果你将Hadoop1.x升级到Hadoop2.x的过程中失败了,当你想在Hadoop1.x中再次启动那些守护进程,你将会遇到以下的问题:
  1. <DIV class="line number1 index0 alt2"><CODE class="java plain"></CODE></DIV>
复制代码
当运行start-all.sh脚本时,你会发现NameNode守护进程是不能启动的,以下是启动NameNode出现错误的记录:
  1. 2013-12-02 18:06:18,659 ERROR org.apache.hadoop.hdfs.server.
  2. namenode.FSNamesystem: FSNamesystem initialization failed.
  3. org.apache.hadoop.hdfs.server.common.IncorrectVersionException:
  4. Unexpected version of storage directory /home/hadoop-1.2.1/name.
  5. Reported: -47. Expecting = -19.
  6. at org.apache.hadoop.hdfs.server.common.Storage.getFields(Storage.java:743)
  7. at org.apache.hadoop.hdfs.server.
  8. namenode.FSImage.getFields(FSImage.java:557)
  9. at org.apache.hadoop.hdfs.server.common.
  10. Storage$StorageDirectory.read(Storage.java:223)
  11. at org.apache.hadoop.hdfs.server.common.
  12. Storage$StorageDirectory.read(Storage.java:212)
  13. at org.apache.hadoop.hdfs.server.namenode.
  14. FSImage.recoverTransitionRead(FSImage.java:320)
  15. at org.apache.hadoop.hdfs.server.namenode.
  16. FSDirectory.loadFSImage(FSDirectory.java:110)
  17. at org.apache.hadoop.hdfs.server.namenode.
  18. FSNamesystem.initialize(FSNamesystem.java:372)
  19. at org.apache.hadoop.hdfs.server.namenode.
  20. FSNamesystem.<init>(FSNamesystem.java:335)
  21. at org.apache.hadoop.hdfs.server.namenode.
  22. NameNode.initialize(NameNode.java:271)
  23. at org.apache.hadoop.hdfs.server.namenode.
  24. NameNode.</init><init>(NameNode.java:467)
  25. at org.apache.hadoop.hdfs.server.namenode.
  26. NameNode.createNameNode(NameNode.java:1330)
  27. at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1339)
复制代码
  其中的/home/hadoop-1.2.1/name目录是Hadoop存放元数据的目录,也就是Hadoop1.x的${HADOOP_HOME}/conf/hdfs-site.xml中dfs.name.dir属性指向的目录(在Hadoop2.2.0的${HADOOP_HOMOE}/etc/hadoop/hdfs-site.xml中dfs.namenode.name.dir指向的目录)。上面的错误报出元数据版本出现了问题,因为刚刚在升级Hadoop的过程中版本文件被修改了,记录这个版本的文件在${dfs.name.dir}/current/VERSION文件中,里面有个layoutVersion属性就是版本的值。那么如何来回滚呢?需要知道的一点是,在Hadoop升级的过程中,Hadoop会在${dfs.name.dir}目录中生成一个previous.checkpoint文件夹,previous.checkpoint文件夹里面的东西就是升级前${dfs.name.dir}/current目录中的一个备份,既然是个备份,那么它的目录结果应该和${dfs.name.dir}/current目录结构一样,事实上也是如此。那么我们可以用这个备份来回滚到升级之前的状态。步骤如下:
  2、运行bin/hadoop-daemon.sh start namenode -rollback(注意这个是在Hadoop1.x里面运行,而不是Hadoop2.x,同时注意配置好HADOOP_HOME)对namenode进行回滚。
  1. [wyp@master hadoop-0.20.2-cdh3u4]$ bin/hadoop-daemon.sh start \ namenode -rollback
复制代码
就这条命令就可以从失败中回滚!回滚之后HDFS的状态就是你升级前集群的状态,也可以访问HDFS里面的数据。
  再说一点:如果你在升级过程中启动了Hadoop2.x的datanode守护进程,那么只回滚namenode是不行的,还需要对datanode进行回滚,命令如下:
  1. [wyp@master hadoop-0.20.2-cdh3u4]$ bin/hadoop-daemon.sh start \
  2. datanode -rollback
复制代码
http://www.wypblog.com





回复

使用道具 举报

lzw 发表于 2013-12-7 19:00:17
可以升级的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条