温馨提示×

Ubuntu HDFS如何版本升级

小樊
33
2025-12-20 19:44:38
栏目: 智能运维

Ubuntu 上 HDFS 版本升级实操指南

一 升级方式与前置检查

  • 方式选择
    • 滚动升级 Rolling Upgrade:在不停机的前提下逐台升级守护进程,要求集群为 HA(HDFS High Availability),自 Hadoop 2.4.0 起支持;JournalNodes 与 Zookeeper 通常无需升级。适合生产环境持续可用。
    • 停机升级:非 HA 集群需重启 NameNode,但 DataNode 仍可滚动完成。适合可短时停机的场景。
  • 前置检查
    • 阅读目标版本的 Release Notes,关注不兼容变更与已知问题。
    • 在测试环境演练全流程,并同步验证客户端兼容性。
    • 执行 HDFS 健康检查hdfs fsck / -files -blocks -locations,保留报告以便升级后对比。
    • 清理临时数据:如 MapReduce 系统目录、本地临时目录等。
    • 备份关键元数据目录(如 dfs.namenode.name.dirdfs.datanode.data.dir 等),并准备回滚方案。
    • 规划停机窗口与回滚触发条件,通知业务方。

二 滚动升级步骤 HA 集群

  • 准备阶段
    • 在所有 NameService 上执行:hdfs dfsadmin -rollingUpgrade prepare,创建用于回滚的 fsimage
    • 执行:hdfs dfsadmin -rollingUpgrade query,等待输出 “Proceed with rolling upgrade”
  • 升级 NameNode
    • 假设 NN1 为 Active、NN2 为 Standby
      • 停止并升级 NN2,以滚动模式启动为 Standby:hdfs namenode -rollingUpgrade started
      • 执行故障转移:hdfs haadmin -failover nn1 nn2,使 NN2 成为 Active、NN1 变为 Standby
      • 停止并升级 NN1,以滚动模式启动为 Standby:hdfs namenode -rollingUpgrade started
  • 升级 DataNode
    • 按批次(如按机架)逐台升级:
      • 关闭指定 DataNodehdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade
      • 确认已停止:hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>
      • 升级并重启 DataNode(重启后自动进入升级流程,保留旧数据用于回滚)。
      • 逐批完成全集群 DataNode 升级。
  • 完成滚动升级
    • 确认集群稳定后执行:hdfs dfsadmin -rollingUpgrade finalize,固化升级(提交后不可回滚)。
  • 联邦集群 Federation
    • 上述步骤需在每个 NameService 上分别执行。

三 停机升级步骤 非 HA 集群

  • 停止 SecondaryNameNode(SNN)
  • 停止并升级 NameNode,以滚动模式启动:hdfs namenode -rollingUpgrade started
  • 升级并重启 SNN
  • 按批次滚动升级 DataNode(同 HA 的 DataNode 升级步骤)。
  • 确认稳定后执行:hdfs dfsadmin -rollingUpgrade finalize

四 回滚 降级与定妥

  • 关键区别
    • 回滚 Rollback:将软件与数据状态一起回到升级前,需集群停机,且只能在滚动升级已启动但未终止前执行。
    • 降级 Downgrade:仅将软件恢复到旧版本,保留用户数据;在 HA 环境下可滚动进行,但需满足 NameNode/DataNode 布局版本未变化 等前提。
    • 定妥 Finalize:确认新版本稳定后执行,删除升级前旧版本数据,之后不可回滚。
  • 常用命令
    • 查询升级进度:hdfs dfsadmin -upgradeProgress status
    • 回滚(停机):先停新版本守护进程,再用旧版本启动:start-dfs.sh -rollback
    • 定妥升级:hdfs dfsadmin -rollingUpgrade finalize
  • 重要提示
    • 升级过程中 DataNode 使用硬链接保留新旧数据副本,便于回滚;定妥后旧副本被清理。
    • 仅在升级未定妥前可回滚;定妥或降级后不可再回滚。
    • JournalNodes 升级导致不兼容,可能需要短暂停机。

五 常见问题与排错要点

  • 启动报错如:“File system image contains an old layout version … An upgrade to version … is required. Please restart NameNode with -upgrade option.”,说明需要执行升级流程(非 HA 可用 start-dfs.sh -upgrade;HA 按滚动升级流程进行)。
  • 升级前确保 NameNode 不在安全模式(HA 场景);升级中可用 hdfs dfsadmin -upgradeProgress status 查看进度与状态。
  • 升级后空间未释放:在未 finalize 前,删除升级前已存在的文件不会真正释放 DataNode 磁盘空间。
  • 客户端与服务端版本需匹配;建议统一 Hadoop 发行版与依赖,并在测试环境验证 API/作业兼容性。
  • 生产建议:使用 Cloudera Manager / Apache Ambari 等工具简化滚动升级与变更管控。

0