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及任务的执行,做到了不停机升级。

05-08 08:17