8月份的时候做了下hadoop的升级,小版本升级
参考文档:http://wiki.apache.org/hadoop/Hadoop_Upgrade
原文地址:http://blog.csdn.net/lxpbs8851/article/details/12968997
在此做一个记录:
从版本 hadoop-0.20.2-cdh3u3 升级到 hadoop-0.20.2-cdh3u6
步骤如下:
1.备份namenode信息
#hadoop dfs –lsr / >/opt/namenode_back/namenode-lsr-v-old.log
#hadoop fsck / >/opt/namenode_back/namenode-fsck-v-old.log
前面2项用于升级之后对数据的对比
#cp –r ${dfs.name.dir} /opt/ namenode_back/name/
备份namenode的meta数据,用户升级失败后的恢复
2.关闭旧集群,上传最新稳定版本cdh3u6,配置各个文件:core、hdfs、mapred、master、slaves,也可以使用先前的配置文件,根据当前版本的情况来决定是否要对配置文件做修改,配置hadoop-env.sh
3.将配置好的新版本目录分发给集群中所有的机器节点,注意文件目录的所属用户,若不同则用chown进行修改。
4.将老版本${dfs.name.dir}目录下的文件拷贝到新版本${dfs.name.dir}的目录下面,要是新老版本的目录一样,可以不要拷贝
5.开始更新操作:
#${NEW_HADOOP_HOME}/bin/start-dfs.sh–upgrade
使用如下命令进行监控,查看是否升级完成:
#$ { NEW_HADOOP_HOME }/bin/hadoop dfsadmin -upgradeProgressstatus
出现Upgrade for version - hadoop-0.20.2-cdh3u6 has been completed.的提示即完成了升级。
6.修改环境变量:
在root用户下修改。
#vi /etc/profile
主要是修改$HADOOP_HOME
7.启动新集群
#${NEW_HADOOP_HOME}/bin/start-all.sh
8.生成新的信息:
#hadoop fs –lsr / >/opt/namenode_back/namenode-lsr-v-new.log
#hadoop fsck / >/opt/namenode_back/namenode-fsck-v-new.log
对比1中2个old-log 若信息不符合(丢失最要数据),可以选择回滚。
9.回滚操作:
#${NEW_HADOOP_HOME}/bin/stop-all.sh
#${NEW_HADOOP_HOME}/bin/start-dfs.sh –rollback
改回环境变量,
#${OLD_HADOOP_HOME}/bin/start-all.sh