Hadoop 滚动升级非常方便,只需要在配置中增加一些选项就可以通过Hadoop自身的代码进行完成。
步骤:
1、首先到需要升级的NameService的Active NameNode上面,比如我们10.39.2.131是ns1的Active NameNode。
2、新增加的配置:
<property>
<name>dfs.ha.fencing.methods</name>
<value>shell(/bin/true)</value>
</property>
3、在ActiveNameNode上面使用命令
hdfs haadmin -ns ns1 -failover nn1 nn2
将nn1切换为Standby,nn2切换为Active。随后看一下web页面,确认这一过程完成顺利。
(如果这一过程失败,采用手动切换。
(1)如果ActiveNameNode没有切换为StandbyNameNode
hdfs haadmin -ns ns1 -transitionToStandby nn1
(2)确认nn1进入standby状态,防止client读取过期的数据。
hdfs haadmin -ns ns2 -transitionToActive nn2)
4、停止nn1(现在已经切换为StandByNameNode)
hadoop-daemon.sh stop namenode
5、替换jar包
6、启动nn1
hadoop-daemon.sh start namenode
7、到nn2(目前为ActiveNameNode),执行步骤3,只不过参数位置变化
hdfs haadmin -ns ns1 -failover nn2 nn1
8、停止nn2
hadoop-daemon.sh stop namenode
9、替换jar包
10、启动nn2
hadoop-daemon.sh start namenode
至此,滚动升级完成,在升级过程中不影响client及任务的执行,做到了不停机升级。