温馨提示×

HDFS如何进行版本升级

小樊
42
2025-12-18 14:14:27
栏目: 编程语言

HDFS版本升级实操指南

一 升级方式与前置检查

  • 方式选择
    • 滚动升级:在HA集群中实现不停机升级,逐台升级NameNodeDataNode,依赖JournalNodeZooKeeper保持可用。注意:JournalNodeZooKeeper在大多数情况下无需升级,贸然升级可能导致停机。仅从Hadoop 2.4.0起支持滚动升级。
  • 前置检查
    • 完整备份关键数据与配置(如NameNode元数据目录、重要配置文件)。
    • 使用hdfs dfsadmin -report检查集群健康与容量。
    • 详细阅读目标版本的官方发行说明与升级指南,确认兼容性不兼容变更
    • 如新版本启用了新特性,先评估并在需要时暂时关闭,升级后再启用。
    • 建议在测试环境演练全流程。

二 滚动升级步骤 HA非联邦集群

  • 准备阶段
    • 执行:hdfs dfsadmin -rollingUpgrade prepare,创建用于回滚的fsimage
    • 执行:hdfs dfsadmin -rollingUpgrade query,反复查询直至出现“Proceeding with Rolling Upgrade”。
  • 升级 NameNode
    • 选择当前Standby NameNode(如NN2):关闭并升级;以滚动模式启动:namenode -rollingUpgrade started
    • 执行故障转移,使NN2变为ActiveNN1变为Standby
    • 关闭并升级原Active NameNode(NN1),以滚动模式启动为Standby
  • 升级 DataNode
    • 按“机架/机柜”等分组,每次选择一小批DataNode
    • 对每台节点执行:
      • 关闭并升级:hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade
      • 等待完全停止:hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>
      • 升级并重启该DataNode
    • 逐批并行处理,直至全集群升级完成。
  • 完成阶段
    • 确认业务稳定后,执行:hdfs dfsadmin -rollingUpgrade finalize,结束滚动升级并清理回滚元数据。

三 联邦集群与停机升级

  • 联邦集群(HA)
    • 对每个命名空间重复“准备 → 升级该命名空间的Active/Standby NN → 升级DataNode → 完成该命名空间”的流程。
  • 非HA集群(需停机)
    • 升级NameNode:先停SecondaryNameNode(SNN),再停并升级NameNode,以滚动模式启动;随后升级并重启SNN
    • DataNode仍可按批次滚动升级以减少业务中断窗口。

四 降级与回滚

  • 关键区别
    • 降级:将软件还原到升级前版本,且保留用户数据;可在升级进行中滚动执行;要求升级前后NameNodeDataNode布局版本均未变更
    • 回滚:将软件与用户数据均还原到升级前状态;只能在升级开始后、结束前执行;不支持滚动,需要停机
  • 滚动降级步骤(HA)
    • 先按批次降级并重启所有DataNode
    • 再按“Standby → Active → Standby”的顺序降级两台NameNode,期间可故障转移保持服务可用。
    • 完成后执行:hdfs dfsadmin -rollingUpgrade finalize
  • 回滚步骤(需停机)
    • 停止所有NameNodeDataNode
    • 按官方流程使用回滚命令恢复至升级前版本与状态。

五 常用命令与注意事项

  • 常用命令
    • 准备/查询:hdfs dfsadmin -rollingUpgrade prepare | query
    • 关闭并升级DN:hdfs dfsadmin -shutdownDatanode host:IPC upgrade
    • 查看DN状态:hdfs dfsadmin -getDatanodeInfo host:IPC
    • NN滚动模式启动:namenode -rollingUpgrade started
    • 完成升级:hdfs dfsadmin -rollingUpgrade finalize
  • 注意事项
    • 仅在HA集群中可实现真正不停机JournalNode/ZooKeeper默认不升级,避免引入停机。
    • 升级前确认兼容性;若新版本启用新特性,遵循“禁用 → 升级 → 启用”。
    • 严格把握降级/回滚的窗口与条件;回滚不可滚动且需停机
    • 全流程在测试环境演练,升级中密切监控复制因子、块报告、延迟与错误日志

0