测试环境介绍:
Hadoop 1.0.3 升级到Hadoop2.4.1
当前老环境(三副本环境):
Namenode 192.168.1.10
Datanode 192.168.1.11 (SecondNamenode)
Datanode 192.168.1.12
Datanode 192.168.1.13
由于Hadoop2.4.1支持HA集群,所有需要在增加一台Namenode机器
新环境规划如下:
Namenode 192.168.1.10
Namenode2 192.168.1.14 新增
Datanode 192.168.1.11
Datanode 192.168.1.12
Datanode 192.168.1.13
为了预防升级过程中出现的各种问题,最好在集群升级的过程前先备份好集群namenode的元数据(${HADOOP_HOME}/conf/hdfs-site.xml中的dfs.name.dir所配置的文件夹),以免升级失败带来不可挽回的损失!
升级步骤开始:
1、 关掉hadoop-1.0.3版本的守护线程,并将关于Hadoop1.0.3所有的相关的环境变量(HADOOP_HOME、PATH等相关环境变量配置)删掉(如果有),以防对Hadoop2.4.1升级的影响。
2、 将Hadoop2.4.1的${HADOOP_HOMOE}/etc/hadoop/hdfs-site.xml
中dfs.namenode.name.dir和dfs.datanode.data.di属性的值分别指向Hadoop1.3.0的${HADOOP_HOME}/conf/hdfs-site.xml中dfs.name.dir和dfs.data.dir的值。
3、 配置Hadoop2.4.1(过程略)。
4、 拷贝Namenode节点上的dfs.namenode.name.dir元数据到Namenode2节点的相关目录。
拷贝dfs.namenode.name.dir元数据里的current目录到Namenode共享目录。
5、 启动第一台Namenode:
$ hadoop-daemon.sh start namenode
正常情况下无法启动,报错提示:
File system image contains an old layout version �Cx.
An upgrade to version -47 is required.
Please restart NameNode with -upgrade option.
提示启动NameNode应该带上-upgrade选项,再试一下
$ hadoop-daemon.sh start namenode -upgrade
Jps查看启动成功。
6、 在第二台Namenode(Namenode2)上启动namenode
$ hadoop-daemon.sh start namenode
正常情况下可以正常启动。
7、 在Datanode节点上依次启动datanode节点
$ hadoop-daemon.sh start datanode
上述两个步骤也可以合并成:start-dfs.sh �Cupgrade
可使用命令:hadoopdfsadmin -upgradeProgress status 查看升级进度
也可以通过查看namenode和datanode日志判断升级是否完毕。
至此,升级步骤完成,你可以查看升级之后的Hadoop2.4.1一样可以访问之前Hadoop1.3.0的数据,并没有什么错误。升级完成后,会在namenode的dfs.namenode.name.dir目录和dfs.datanode.data.dir目录下多出一个previous/ 目录。如果确认升级成功后,可以根据实际情况决定是否需要删掉这个目录,运行以下命令把以前的版本删掉:
$ hdfs dfsadmin -finalizeUpgrade
注意:-finalizeUpgrade不是升级必须的,所以根据实际情况去执行。一旦执行该命令,会删掉旧版本数据,以后就不能回滚了。