CentOS HDFS的版本升级步骤是什么
小樊
42
2025-12-05 23:10:26
CentOS 上 HDFS 版本升级步骤
一 升级方式与前置准备
- 明确升级方式
- 滚动升级 Rolling Upgrade:适用于启用 HA 的集群,尽量在不中断服务的前提下完成升级,步骤更复杂但可用性更高。
- 停机升级:适用于 非 HA 或允许短暂停机的场景,流程更简单。
- 前置检查与准备
- 完整备份关键数据与配置(如 NameNode 元数据目录、hdfs-site.xml/core-site.xml、JAVA_HOME 等),并准备回滚方案。
- 核对版本兼容性与变更说明,阅读目标版本的官方升级文档;在测试环境演练全流程。
- 检查集群健康:执行 hdfs dfsadmin -report,确保 Safemode 关闭、无 Decommissioning 节点、数据块副本满足策略。
- 规划窗口与变更单,通知业务方,准备回滚触发条件与应急联系人。
二 滚动升级步骤 HA 集群
- 准备阶段
- 执行 hdfs dfsadmin -rollingUpgrade prepare 创建回滚镜像;用 hdfs dfsadmin -rollingUpgrade query 查询状态,直到出现 “Proceed with rolling upgrade”。
- 升级 NameNode
- 依次升级 Standby NN:停止旧版本 → 部署新版本 → 启动为 Standby;通过 ZKFC/手动切换 将 Active/Standby 角色对调;随后升级原 Active NN 并再次切换,使新版本 NN 成为 Active。
- 升级 DataNode
- 按批次(如按机架/机柜)逐台或分批停机升级,确认节点重新注册、块报告正常后再进行下一批,避免一次性大规模下线。
- 完成与验证
- 全部节点升级完成后,执行 hdfs dfsadmin -rollingUpgrade finalize 提交升级;使用 hdfs dfsadmin -report、jps 与 Web UI 核验集群状态与版本信息。
三 停机升级步骤 非 HA 集群
- 安全停机
- 依次停止 SecondaryNameNode(SNN) 与 NameNode,随后停止全部 DataNode。
- 备份与进入安全模式
- 启动 NameNode 进入 Safemode:hdfs dfsadmin -safemode enter;执行 hdfs dfsadmin -saveNamespace 持久化元数据。
- 执行升级
- 部署新版本 Hadoop/HDFS,保持配置一致(尤其是 dfs.namenode.name.dir、dfs.datanode.data.dir、JAVA_HOME);执行 hdfs namenode -upgrade 执行升级流程。
- 启动与验证
- 启动 NameNode(必要时启动 SNN),随后启动 DataNode;通过 hdfs dfsadmin -report 与 jps 检查集群健康与版本。
四 回滚与验证
- 滚动升级回滚
- 在 finalize 之前 如需回滚,可对各组件按相反顺序执行回滚操作(NN/ DN 逐个回退到旧版本并重启),随后使用 hdfs dfsadmin -rollingUpgrade rollback 完成回滚流程。
- 停机升级回滚
- 停止集群后执行 hdfs namenode -rollback 回退元数据与目录结构,恢复旧版本二进制与配置后启动集群。
- 提交升级
- 确认升级稳定且业务验证通过后,再执行 hdfs dfsadmin -rollingUpgrade finalize(滚动升级)提交升级;提交后通常不可回滚,请谨慎操作。
- 验证要点
- 使用 hdfs dfsadmin -report 检查 Live Nodes、Decommissioned/Under Replicated Blocks 为 0;核对 Web UI 与客户端连通性;抽样读写业务验证;持续观察 NameNode/DataNode 日志 与关键指标。
五 注意事项与常见陷阱
- 严禁在升级过程中执行 NameNode 重新格式化;仅在全新集群或明确需要重建元数据时才可以格式化。
- 保持 JAVA_HOME 与关键目录(如 dfs.namenode.name.dir/dfs.datanode.data.dir)配置一致;跨小版本升级时避免一次性跨多个大版本。
- 升级前确保 HDFS 与 YARN/HBase/Spark 等组件的版本兼容;必要时先升级依赖组件或调整功能开关。
- 选择 低峰时段 操作,分批滚动,单批次规模不宜过大;全程保留 回滚路径 与 备份快照,并准备应急联系人。