hdfs滚动升级(rollingUpgrade )

最近对hdfs的升级过程很感兴趣,所以准备研究下其升级的过程,本篇文章是依据官网文档进行的升级过程(地址:Apache Hadoop 2.10.2 – HDFS Rolling Upgrade),该文章中还有关于降低的介绍,感兴趣的可以自行查阅验证。

1、升级基础常识(提取自官网)

1)hdfs升级有两种,一种是停机升级,一种是滚动升级。滚动升级允许datanode、namenode等组件各自独立的升级,且不用停止hdfs服务;

2)滚动升级的前提是集群是HA高可用模式

3)滚动升级从hadoop2.4.0开始支持

4)滚动升级一般是升级namenode和datanodejournalnode和zkfc相对稳定,一般不升级,如果升级可能会导致集群下线

2、环境准备

HA高可用集群一套,我这里用的版本是2.10.1

hdfs滚动升级(rollingUpgrade )_第1张图片

准备升级的新版本安装包一个,我这里用的是3.2.4版本;

hdfs滚动升级(rollingUpgrade )_第2张图片

3、数据备份(用于升级异常后回滚)

1)备份镜像fsimage

hdfs dfsadmin -rollingUpgrade prepare

hdfs滚动升级(rollingUpgrade )_第3张图片

2)查询备份进度

hdfs dfsadmin -rollingUpgrade query

hdfs滚动升级(rollingUpgrade )_第4张图片

出现“Proceed with rolling upgrade”表示fsimage创建成功

3)拷贝2.10.1中的关键配置到3.2.4安装包中,并分发安装包到所有节点

core-site.xml、hdfs-site.xml、hadoop-env.sh

hdfs滚动升级(rollingUpgrade )_第5张图片

4、环境变量变更

修改/etc/profile中环境变量,指向最新的版本(如果还是指向老版本,即使用全路径命令,还是会影响新版本的命令执行):

hdfs滚动升级(rollingUpgrade )_第6张图片

5、升级namenode(注意,此时执行的是3.2.4版本中的命令)

首先升级standby节点,因为我本地nn1是active,所以先升级nn2,升级流程如下:

kill -9 
hdfs --daemon start namenode -rollingUpgrade started

hdfs滚动升级(rollingUpgrade )_第7张图片

此时到web页面也可观察到nn2节点的版本已经升级到了3.2.4版本

hdfs滚动升级(rollingUpgrade )_第8张图片

其次将nn2转换为active状态后重启nn1:

我这里本来向用failover强制转换active和stanby状态,但是没成功,于是就主动杀死当前namenode进程,以此达到nn2由standby转换为active的过程,注意这里不要刚杀死nn1的namenode进程就重启,最好在nn2上执行hdfs haadmin -getServiceState nn2确认nn2已经转换为active状态,再升级重启nn1上的namenode进程。

hdfs滚动升级(rollingUpgrade )_第9张图片

至此,namenode的升级已经完成。接下来我们看下datanode的升级过程。

6、升级datanode(注意,此时执行的是3.2.4版本中的命令)

推荐:datanode节点一个个关闭在重启升级,不要批量关闭和重启升级

首先执行如下指令关闭datanode节点:

hdfs dfsadmin -shutdownDatanode upgrade

其次执行如下指令或者jps指令查看datanode是否已经被关闭:

hdfs dfsadmin -getDatanodeInfo node1:50020

hdfs滚动升级(rollingUpgrade )_第10张图片

最后则是在对应的datanode节点重启datanode进程:

hdfs --daemon start datanode

datanode的升级我只贴了node1节点的图,其它节点过程类似就没贴。

7、确认升级结束

执行如下命令确认升级结束

        hdfs dfsadmin -rollingUpgrade finalize

8、效果

hdfs滚动升级(rollingUpgrade )_第11张图片

hdfs滚动升级(rollingUpgrade )_第12张图片

hdfs滚动升级(rollingUpgrade )_第13张图片

可以看到namenode和datanode都运行正常,且版本升级为了3.2.4。而且web页面上的升级信息也自动消除调了。

你可能感兴趣的:(hdfs,hadoop,大数据)