Ubuntu HDFS版本升级流程是什么
小樊
45
2025-11-17 04:51:24
Ubuntu 上 HDFS 版本升级流程
一 升级方式与前置准备
- 升级方式
- 滚动升级(Rolling Upgrade):适用于 Hadoop 2.x → 3.x 及更高版本,支持在 HA 或 非 HA 集群中逐个节点升级,尽量做到业务不停机。核心命令包括:hdfs dfsadmin -rollingUpgrade prepare/query/start/finalize。
- 停机升级:适用于无法滚动升级的场景(如老版本或非 HA),需短暂停机,按序重启 NameNode/DataNode。
- 前置检查
- 完整备份关键数据与配置:包括 dfs.namenode.name.dir 元数据目录、重要配置文件(如 core-site.xml、hdfs-site.xml、yarn-site.xml 等)。
- 版本与兼容性核对:阅读目标版本的发行说明,确认 OS、JDK、依赖库、HDFS 布局/特性 的兼容性。
- 测试验证:在测试环境演练全流程,覆盖升级、回滚、故障定位。
- 规划窗口与回滚方案:明确升级窗口、监控告警、回滚触发条件与步骤。
- 配置重点复查:如 fs.defaultFS、dfs.replication、dfs.namenode.name.dir 等关键参数在新版本中的有效性。
二 滚动升级步骤(HA 与非 HA)
- 准备阶段
- 在 Standby NameNode 执行:
hdfs dfsadmin -rollingUpgrade prepare
- 查询状态:
hdfs dfsadmin -rollingUpgrade query,等待返回 “Proceed with rolling upgrade”。
- 升级 NameNode
- HA 集群
- 先升级 Standby NameNode;
- 执行故障转移,使原 Active 变为 Standby;
- 升级原 Active NameNode;
- 以 -rollingUpgrade started 选项将其作为 Standby 启动;
- 视需要再次切换,使新 Active 处于健康状态。
- 非 HA 集群
- 停止并升级 Secondary NameNode(SNN);
- 停止并升级 NameNode;
- 启动时带上 -rollingUpgrade started 选项;
- 升级并重启 SNN。
- 升级 DataNode
- 按“机架/机柜/子集”分批进行,逐台操作:
- 关闭 DataNode 并触发升级:
hdfs dfsadmin -shutdownDatanode <datanode_host>:<ipc_port> upgrade
- 等待停止完成:
hdfs dfsadmin -getDatanodeInfo <datanode_host>:<ipc_port>
- 启动新版本 DataNode:
hdfs --daemon start datanode(或对应脚本)
- 重复分批直至全集群升级完成。
- 完成升级
- 全量验证通过后执行:
hdfs dfsadmin -rollingUpgrade finalize(不可逆,清理旧版本元数据)。
三 停机升级步骤(无法滚动升级时)
- 停止集群:
$HADOOP_HOME/sbin/stop-dfs.sh
- 备份与替换
- 备份旧配置与元数据:
cp -r $HADOOP_HOME/conf $HADOOP_HOME/conf.old,备份 dfs.namenode.name.dir;
- 解压新版本至目标目录并更新 HADOOP_HOME 环境变量。
- 启动与升级
- 启动 NameNode 并执行升级:
$HADOOP_HOME/bin/hdfs namenode -upgrade
- 监控升级进度:
hdfs dfsadmin -upgradeProgress status/details
- 启动 DataNode:
$HADOOP_HOME/sbin/start-dfs.sh
- 验证与收尾
- 运行
hdfs dfsadmin -report 与 NameNode Web UI(默认 9870 端口) 检查状态;
- 业务验证通过后执行:
hdfs dfsadmin -finalizeUpgrade 清理旧版本备份。
四 验证与回滚
- 验证要点
- 进程与 UI:用
jps 确认 NameNode/DataNode/ResourceManager/NodeManager 运行;访问 http://<namenode_host>:9870 查看集群与健康状态;
- 集群报告:
hdfs dfsadmin -report 检查容量、节点数、块数等;
- 功能回归:执行
hadoop fs -put、hadoop jar hadoop-mapreduce-examples.jar wordcount 等基础作业验证读写与计算链路。
- 回滚与降级
- 滚动升级中回滚(未执行 finalize):
- 停止集群;
- 执行:
hdfs dfsadmin -rollingUpgrade rollback;
- 使用旧版本二进制与配置重启集群。
- 停机升级回滚(升级后未 finalize):
- 停止集群;
- 执行:
hdfs namenode -rollback;
- 使用旧版本重启 NameNode/DataNode。
- 重要限制:finalize 后不可回滚;降级通常可在不丢用户数据的前提下进行,但回滚需停机且必须在滚动升级开始后、未完成 finalize 前执行。
五 关键注意事项
- 配置与兼容性
- 新版本可能引入 配置项变更/废弃 与 HDFS 布局变化,务必逐项核对 core-site.xml、hdfs-site.xml 等;
- 升级前在测试环境验证所有关键业务链路与参数生效。
- 联邦集群
- 对 每个命名空间 分别执行滚动升级的 prepare/start/finalize 流程。
- 操作规范
- 全程关注 $HADOOP_HOME/logs 日志与监控告警;
- 分批滚动时控制并发度,避免一次性升级过多节点;
- 明确 finalize 的风险(不可逆),建议在充分观察后再执行。