【大数据】Apache Hadoop进行版本升级的操作

1 篇文章 0 订阅
1 篇文章 0 订阅

3月份,公司最大的集群要从Hadoop2.4升级到Hadoop2.8 ,是一个大版本跨度的升级操作,所以前期对Hadoop2.8版本进行了很多功能和性能方面的验证和测试。同时也拟定了几个升级和回滚方案。由于集群的离线任务一般在夜间,所以夜间的HDFS压力很大,RPC延迟很高,导致集群性能下降,最终升级是在这种集群快要支撑不住的情况下进行的。当然,升级过程还算比较平稳,没有出现什么惊心动魄的事情。

我们预定的方案是将集群先升级到过渡版本,再升级到最终版本。最终版本不可回滚到原先的2.4版本,但过渡版本可以很容易的回滚。

hadoop-2.8.2.1是过渡版本,此版本支持降级,但是2.8.2的新功能不能使用。使用此版本升级的时候,不需要执行hdfs RollingUpgrade相关的命令;但是需要设置参数

dfs.namenode.duringRollingUpgrade.enable=true

hadoop-2.8.2.2是最终版本,该版本不支持降级,但是要使用2.8.2的新功能,需要使用HDFS rollingUpgrade相关的命令进行升级。(我们这次只升级HDFS组件,不升级yarn组件,我们两个基础组件是分开用户起的服务,所以对yarn没有影响)

第一阶段 将hadoop2.4升级到hadoop2.8.2.1(过渡版本)

        这个主要分三步

  1. 升级standby namenode到 2.8.2.1版本
  2. 验证standby节点的功能是否正常,正常的话就手动做failover,升级后的standby变成active,以2.8.2.1对外提供服务
  3. 将现在的standby节点(原来的active)升级到2.8.2.1版本,并且全面验证集群的功能和性能。


下面就大概说一下操作步骤

首先将软件包准备好,放到相应目录下

再将原来2.4版本的配置文件全部拷贝到新版本的目录下

rm -r ~/software/hadoop-2.8.2.1/etc/hadoop && scp -r ~/software/hadoop/etc/hadoop ~/software/hadoop-2.8.2.1/etc/

修改hadoop2.8.2.1 的配置文件

在hdfs-site.xml增加配置

<property>
        <name>dfs.namenode.duringRollingUpgrade.enable</name>
        <value>true</value>

</property>

检查namenode HA的状态

hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

先升级standby节点,在standby节点上操作

hadoop-daemon.sh stop zkfc
hadoop-daemon.sh stop namenode
cd ~/software && rm hadoop && ln -s hadoop-2.8.2.1 hadoop
检查是否软链正常
ls -trl
hadoop-daemon.sh start namenode

hadoop-daemon.sh start zkfc

正常启动之后,做相关检查

检查项
1、hdfs haadmin -getServiceState nn2 是否为standby
2、检查WebUI  startupprogress 等待safe mode 退出
3、standby功能进行全面验证(1-2天)

升级原active节点(现standby)

hdfs haadmin -failover nn1 nn2

检查项
1、2.8.2.1的active节点功能进行全面验证(1-2天)


检查状态
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
在确定状态切换之后,才可执行升级操作
hadoop-daemon.sh stop zkfc
hadoop-daemon.sh stop namenode
cd ~/software && rm hadoop && ln -s hadoop-2.8.2.1 hadoop
检查是否软链正常
ls -trl
hadoop-daemon.sh start namenode
hadoop-daemon.sh start zkfc
检查项
1、hdfs haadmin -getServiceState nn1 是否为standby
2、检查UI 等待safe mode 退出

3、standby功能进行全面验证(1-2天)

以上过程全部完成,并且验证通过后,过渡版本就算升级完成

第二阶段 升级到最终版本2.8.2.2

与前面一样,先把hadoop2.8.2.2版本的软件包下载到机器上相应目录

然后把2.8.2.1中的配置文件拷贝过去

rm -r ~/software/hadoop-2.8.2.2/etc/hadoop && scp -r ~/software/hadoop/etc/hadoop ~/software/hadoop-2.8.2.2/etc/

修改hdfs-site.xml 相关参数配置

因为需要采用hdfs RollingUpgrade相关的命令,所以将这个参数设置为false

<property>
        <name>dfs.namenode.duringRollingUpgrade.enable</name>
        <value>false</value>

</property>

检查两个namenodeHA状态

hdfs haadmin -getServiceState nn1

hdfs haadmin -getServiceState nn2

先升级standby节点 

执行命令 hdfs dfsadmin -rollingUpgrade prepare

进入目录 cd ~/hadoop/namenode/current(namenode元数据文件所在目录即fsimage和editlog的目录)

等待两分钟,查看是否目录中有 fsimage_rollback_xxxx.md5 文件生成 

确认文件生成之后,执行命令 hdfs dfsadmin -rollingUpgrade query 查看升级状态

手动备份 fsimage

mkdir -p /data01/hdfs/backup/namenode
cp -r ~/hadoop/namenode/current /data01/hdfs/backup/namenode (注意提前计算空间,不要备份的时候空间不够

停止进程,改软链

hadoop-daemon.sh stop zkfc
hadoop-daemon.sh stop namenode

cd ~/software && rm hadoop && ln -s hadoop-2.8.2.2 hadoop

因为最终版本的layoutVersion发生变化,所以必须需要此命令来升级namenode

hadoop-daemon.sh start namenode -rollingUpgrade started

hadoop-daemon.sh start zkfc

检查

1、hdfs haadmin -getServiceState nn2 是否为standby

2、检查WebUI 等待safe mode 退出,等待半小时后没有问题,就继续操作。

未完待续

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值