hadoop2.6.0升级到最新2.10或3.x
目录
说明:
1.本人准备升级的旧版hadoop2.6.0-cdh安装目录:/data/br/base/hadoop/
2.新版hadoop3.1.3安装目录:/data/br/base/hadoop-3.1.3/ 或
新版hadoop2.10.0安装目录:/data/br/base/hadoop-2.10.0/
3.滚动升级完hdfs后,建议修改旧版hadoop目录,新版hadoop安装目录改成原来旧版目录,即/data/br/base/hadoop/
4.hadoop滚动升级主要针对的是namenode,datanode进程.
第一阶段 停机以及备份NameNode,zk目录
备份元数据目录,是防止万一使用hadoop命令升级过程出现未知异常情况或操作失误,升级失败且不能通过命令回滚时,可以重新使用原来数据目录。
- 停机
# stop-yarn.sh
# stop-dfs.sh
- 备份jn,nn,zk目录
第二阶段 在集群上安装新版本的Hadoop
下载Hadoop 3.1.3后解压,最好移除PATH环境变量下的Hadoop脚本,这样的话,就不会混淆针对不同版本的脚本。将HADOOP_HOME指向新的Hadoop:
export HADOOP_HOME=/data/br/base/hadoop-3.1.3
并使/etc/profile文件生效:source /etc/profile
- 新版hadoop配置hadoop-env.sh中指定JAVA_HOME
- 确保新版hadoop的${HADOOP_HOME}/etc/hadoop/hdfs-site.xml中的dfs.namenode.name.dir和dfs.datanode.data.dir属性的值分别为Hadoop 2.6.0的hdfs-site.xml的dfs.namenode.name.dir和dfs.datanode.data.dir属性的值。或者直接使用原版本的hadoop配置文件:core-site.xml、hdfs-site.xml,mapred-site.xml,yarn-site.xml替换新版hadoop配置目录下。
注意:HADOOP_HOME指定成新版hadoop目录后,请检查配置文件中是否有需要修改目录:
如yarn-site.xml中指定的hadoop目录需要修改成指定新版hadoop目录
- 新版本hadoop3.1.3配置datanode节点为works配置文件指定(hadoop2.6.0中为slaves文件)
直接将2.6.0中slaves内容复制到3.1.3中的works即可。
配置完成,分发到每台机器上,保证集群中每台机器都有配置hadoop-3.1.3
注意:新版hadoop命令有变化,如下
第三阶段 准备滚动升级
先启动旧版本的Hadoop:
# /data/br/base/hadoop/sbin/start-dfs.sh
1. 准备滚动升级
假设有两个namenode NN1和NN2,其中NN1和NN2分别处于活动和备用状态。以下是升级HA群集的步骤:
-
准备滚动升级
- 运行“ hdfs dfsadmin -rollingUpgrade prepare ”以创建用于回滚的fsimage。
2.运行“ hdfs dfsadmin -rollingUpgrade query ”以检查回滚映像的状态。等待并重新运行命令,直到显示“ Proceeding with Rolling Upgrade ”消息。
2. 升级active和standby NN
- 关闭并升级standby NN2。
旧版standby关闭:/data/br/base/hadoop/sbin/hadoop-daemon.sh stop namenode
2.开始NN2 standby“ -rollingUpgrade started ”选项。
新版standby启动:
$HADOOP_HOME/bin/hdfs --daemon start namenode -rollingUpgrade started (3.x版本命令)
或者
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode -rollingUpgrade started (2.x版本命令)
观察新版standby NN2 web页面:
3.从NN1到NN2的故障转移,以便NN2变为active状态,而NN1变为standby状态。
切换旧版active,使上一个新版的standby为active:
旧版NN1停止:/data/br/base/hadoop/sbin/hadoop-daemon.sh stop namenode
4.开始NN1与待机“ -rollingUpgrade开始 ”选项。
观察新版的standby NN2为active后,NN1上启动新版standby:
新版standby:
$HADOOP_HOME/bin/hdfs --daemon start namenode -rollingUpgrade started (3.x版本命令)
或者
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode -rollingUpgrade started (2.x版本命令)
以上namenode进程升级为新版运行完毕,接下来滚动升级DN进程:
3. 升级DN
1.关闭旧版进程
/data/br/base/hadoop/sbin/hadoop-daemon.sh stop datanode
2.启动新版进程
$HADOOP_HOME/bin/hdfs --daemon start datanode (3.x版本启动命令)
或者
$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode (2.x版本命令)
重复上述步骤,直到升级群集中的所有数据节点。
- 验证新版hadoop功能
- 检查namenode web:
验证hdfs进程正常后。
- 启动yarn,验证Yarn web:
start-yarn.sh
yarn-daemon.sh start resourcemanager
- 验证新版hadoop功能是否正常:
验证yarn是否正常:使用hadoop自带wordcount例子提交运行,并查看是否成功。
若进程均正常则继续替换druid依赖hadoop的旧版配置文件,改为新版配置文件,即core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml。
重启druid,zeus,查询历史数据及重新摄取数据,验证兼容性:
- 是否能正常查询druid中原有历史数据
- 发送新数据到druid,并过1小时后,coordinator页面是否生成segment,是否可以查询。
- Zeus提交rollup job,验证druid与mapreduce是否兼容。
5.提交完成滚动升级
若验证新版hadoop功能ok,则运行“ hdfs dfsadmin -rollingUpgrade finalize ”完成滚动升级。
/data/br/base/hadoop/bin/hdfs dfsadmin -rollingUpgrade finalize
若升级失败或验证新版hadoop功能存在其他问题,想回滚到之前版本,可以进行如下回滚操作,以回到回滚之前的状态。
回滚
回滚将软件还原到升级前的版本,但也将用户数据还原到升级前的状态。假设时间T为滚动升级开始时间,并且升级通过回滚终止。T之前创建的文件在HDFS中仍然可用,但是T之后创建的文件不可用。在T之前删除的文件在HDFS中仍然被删除,但是在T之后删除的文件被恢复。
始终支持从较新版本回滚到升级前版本。但是,这不能以滚动方式完成。它需要集群停机。假设NN1和NN2分别处于活动状态和待机状态。以下是回滚的步骤:
- 回滚HDFS
1.关闭所有新版NN和DN。
hadoop-daemon.sh stop namenode
hadoop-daemon.sh stop datanode
2.在所有计算机上还原升级前的版本。
修改环境变量HADOOP_HOME重新指向旧版,并使之生效。
3.开始NN1为活动的“ -rollingUpgrade rollback ”选项。
执行旧版hadoop目录中命令:
4.在NN2上运行`-bootstrapStandby'并以standby状态正常启动。
./bin/hdfs namenode -bootstrapStandby
./sbin/hadoop-daemon.sh start namenode
5.使用“ -rollback ”选项启动所有DN。
./sbin/hadoop-daemon.sh start datanode -rollback
完成回滚操作。
升级中可能遇到的问题记录:
1.升级新版后,start-dfs.sh,发现有一台namenode进程挂掉:namenode日志报错:
,则执行hdfs dfsadmin -refreshNodes 刷新datanode列表信息。
参考地址
https://www.cnblogs.com/luengmingbiao/p/11324801.html
https://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HdfsRollingUpgrade.html
https://hadoop.apache.org/docs/r2.10.0/hadoop-project-dist/hadoop-hdfs/HdfsRollingUpgrade.html
说明:1.本人准备升级的旧版hadoop2.6.0-cdh安装目录:/data/br/base/hadoop/
2.新版hadoop3.1.3安装目录:/data/br/base/hadoop-3.1.3/ 或
新版hadoop2.10.0安装目录:/data/br/base/hadoop-2.10.0/
3.滚动升级完hdfs后,建议修改旧版hadoop目录,新版hadoop安装目录改成原来旧版目录,即/data/br/base/hadoop/
4.hadoop滚动升级主要针对的是namenode,datanode进程,