对于Hadoop的hdfs来说,升级时直接把低版本的数据拷到高版本的hdfs上就行。
具体步骤:
1. hadoop fs -copyToLocal [低版本的数据目录],防止数据丢失。
2. 对hdfs-site.xml里面的dfs.name.dir和dfs.data.dir的路径指定的元数据进行备份,防止丢失。
3. stop正在运行的集群后,需要修改环境变量/etc/profile文件,因为Hadoop1.x和Hadoop2.x的环境变量有一处不一样,就是conf目录的路径,如下所示:
hadoop1.x的路径
export HADOOP_CONF_DIR=$HADOOP_HOME/conf
hadoop2.x的路径
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
之后记得把该主机的profile文件分发到各个节点!!
4,安装Hadoop高版本,进入etc/hadoop中配置core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml的属性,和1.x一样。
(1)注意在hdfs-site.xml里面的namenode的dir和datanode.dir指向原来hadoop1.x的元数据地址。
(2)一切配置完毕后,用scp进行分发,每个节点上发一个
(3)不要格式化启动集群,查看namenode.log,发现如下提示(截取了一部分错误):
File system image contains an old layout version -41.
An upgrade to version -47 is required.
Please restart NameNode with -upgrade option.
(4)stop新安装的Hadoop,进行如下升级操作:
sbin/hadoop-daemon.sh start namenode -upgrade
然后查看,hadoop-namenode.log发现没有原来的的异常,就代表升级成功。此时如果升级失败,清空新安装Hadoop的集群元数据,格式化namenode,重启新安装Hadoop的集群,直接把之前的备份数据,上传到新安装Hadoop的集群即可。