HDFS在CentOS上如何进行版本升级
小樊
31
2025-11-30 02:22:39
升级总览与策略选择
- 在 CentOS 上升级 HDFS 通常有两种方式:
- 滚动升级(HA 集群推荐):业务几乎不中断,逐组件升级并校验。
- 停机升级(非 HA 或无法滚动时使用):统一停服、升级、再启动。
- 升级前务必完成:
- 完整备份(如 NameNode 元数据目录、JournalNode 数据、关键配置 等)。
- 核对版本兼容性与变更说明,先在测试环境演练。
- 规划回滚路径与回滚窗口,准备监控与告警。
升级前准备
- 检查集群状态与版本:
- 查看 HDFS 状态:hdfs dfsadmin -report
- 查看 Hadoop 版本:hadoop version
- 备份与一致性:
- 进入安全模式并保存命名空间:hdfs dfsadmin -safemode enter → hdfs dfsadmin -saveNamespace
- 备份元数据目录(如 dfs.namenode.name.dir 指向的路径)与 JournalNode 数据目录。
- 配置与兼容性:
- 复核 core-site.xml、hdfs-site.xml、hadoop-env.sh 等关键配置;确保 JAVA_HOME 与新版本一致。
- 确认与 YARN、HBase、Hive 等组件的版本兼容策略。
- 资源与窗口:
- 预留磁盘与内存,选择业务低峰期执行,完善监控与回滚预案。
滚动升级步骤(HA 推荐)
- 准备阶段:
- 执行:hdfs dfsadmin -rollingUpgrade prepare
- 查询状态:hdfs dfsadmin -rollingUpgrade query,直至出现 “Proceed with rolling upgrade”。
- 升级 NameNode:
- 依次升级 Standby NN → 切换 Active/Standby → 升级原 Active NN → 再次切换,确保每一步健康后再继续。
- 升级 DataNode:
- 按批次(如按机架)逐台停机、升级、启动并确认 Version 与 Block Report 正常,再推进下一批。
- 完成阶段:
- 全部节点升级并验证后,执行:hdfs dfsadmin -rollingUpgrade finalize,提交升级。
- 联邦集群(HA + Federation):对每个 命名空间 分别执行上述流程。
停机升级步骤(非 HA 或无法滚动)
- 停止服务:
- 依次停止 SecondaryNameNode(如有)与 NameNode、DataNode(示例:sudo systemctl stop hadoop-hdfs-namenode、sudo systemctl stop hadoop-hdfs-datanode)。
- 执行升级:
- 启动新版本后,在 NameNode 上执行:hdfs namenode -upgrade,等待升级流程完成。
- 启动与验证:
- 启动 NameNode/DataNode,使用 hdfs dfsadmin -report 与 jps 校验进程与集群健康。
- 提交升级:
- 确认无误后执行:hdfs namenode -finalize;如需回滚,在未 finalize 前使用 hdfs namenode -rollback。
回滚与验证及注意事项
- 回滚策略:
- 滚动升级未提交前可回滚;停机升级在未执行 -finalize 前可用 -rollback 回到升级前状态。
- 回滚后按流程重启并复核数据一致性与服务健康。
- 验证要点:
- 进程:jps 检查 NameNode/DataNode 等进程是否存在。
- 集群:hdfs dfsadmin -report 检查容量、节点数、块报告与健康状态。
- 业务:抽样读写路径、关键作业回归。
- 关键注意事项:
- 严格把控版本兼容与配置变更;升级期间密切监控 磁盘、内存、网络 与 GC/延迟。
- 先小流量或测试环境演练,再在生产环境执行;保留完整备份与回滚窗口。