温馨提示×

Hadoop在Linux上如何升级

小樊
45
2025-12-30 07:17:59
栏目: 智能运维

Linux上Hadoop升级实操指南

一 升级方式与选择

  • 停机升级(适用于跨大版本或重大变更)
    • 流程要点:备份配置与元数据 → 停止集群 → 安装新版本 → 迁移/合并配置 → 启动并验证 → 需要时回滚。
    • 适用场景:跨多个大版本、配置项/存储格式变化较大、无法保证滚动兼容时。停机窗口需提前评估与公告。
  • 滚动升级(Rolling Upgrade,适用于同代小版本,HDFS HA)
    • 流程要点:准备滚动升级 → 逐台/分批重启守护进程 → 升级完成后提交或回滚。
    • 适用场景:希望尽量降低业务中断时间,且集群为HDFS HA架构、组件版本支持滚动升级时。

二 通用前置检查与准备

  • 核对当前版本与依赖
    • 执行:hadoop version 确认现网版本;检查 Java 版本与新版本要求是否匹配。
  • 全面备份
    • 备份关键内容:NameNode 元数据(fsimage 等)、重要配置文件(如 core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml)、关键业务数据与脚本。
  • 变更评估与兼容性验证
    • 阅读目标版本的发行说明/升级指南,梳理废弃参数、行为变更与兼容性风险;在测试环境完成端到端验证(含 Hive/Spark/Flink 等上层组件)。
  • 回滚方案与演练
    • 明确回滚触发条件与步骤(如基于备份的元数据恢复、旧安装包回退、服务回滚脚本);在演练环境验证回滚有效性。

三 标准操作步骤

  • 停机升级(通用)
    1. 停止集群:${HADOOP_HOME}/sbin/stop-dfs.sh${HADOOP_HOME}/sbin/stop-yarn.sh(或使用 stop-all.sh)。
    2. 备份:配置文件与元数据(含 JournalNode 数据目录、ZooKeeper 元数据等)。
    3. 安装新版本:下载并解压至目标目录(如 /usr/local/hadoop-x.y.z)。
    4. 迁移配置:将旧版 ${HADOOP_HOME}/etc/hadoop/ 下的配置文件复制到新版对应目录,并按新版本要求调整参数。
    5. 更新环境变量:HADOOP_HOME 指向新目录,并将 bin/sbin/ 加入 PATH
    6. 启动集群:${HADOOP_HOME}/sbin/start-dfs.sh${HADOOP_HOME}/sbin/start-yarn.sh
    7. 验证:hdfs dfsadmin -reportjps、访问 NameNode/ResourceManager Web UI、抽样执行作业。
    8. 回滚(如失败):按预案恢复备份并重启,或使用旧安装包回退。
  • 滚动升级(HDFS HA,尽量不停机)
    1. 准备:确认集群为 HA,检查新版本对滚动升级的支持说明。
    2. 初始化:hdfs dfsadmin -rollingUpgrade prepare
    3. 查询状态:hdfs dfsadmin -rollingUpgrade query(看到 “Proceed with rolling upgrade” 再继续)。
    4. 执行升级:按节点角色分批重启 JournalNode → DataNode → NameNode(Standby → Active),保持业务尽量不断流。
    5. 完成或回滚:
      • 验证通过后提交:hdfs dfsadmin -rollingUpgrade finalize
      • 如异常则回滚:hdfs dfsadmin -rollingUpgrade rollback
    6. 验证:检查集群健康、块报告、应用运行情况。

四 升级后验证与回滚

  • 快速健康检查
    • 守护进程:jps 确认 NameNode/DataNode/ResourceManager/NodeManager 等进程齐全。
    • HDFS:hdfs dfsadmin -report 检查 容量、可用空间、DataNode 数量;抽样执行 hdfs dfs -ls / 与读写小文件。
    • YARN:yarn application -listyarn node -list 检查资源与节点状态;提交测试作业验证计算链路。
    • Web UI:访问 NameNode/ResourceManager 页面,确认版本号与集群健康。
  • 回滚要点
    • 停机升级:使用备份的 fsimage 与配置文件恢复,或切换回旧版安装目录并重启。
    • 滚动升级:使用 hdfs dfsadmin -rollingUpgrade rollback 回退到升级前状态,再按流程恢复服务。

五 常见问题与最佳实践

  • 常见问题
    • 客户端与服务端版本不一致导致 IncompatibleClassChangeError 等类冲突,需统一 hadoop-client 版本。
    • 配置参数变更或废弃引发作业失败,需对照新版本参数说明逐项校验。
    • 滚动升级未按顺序重启或未完成提交/回滚,导致 升级状态不一致,应严格按状态查询与步骤执行。
  • 最佳实践
    • 灰度/金丝雀发布:先升级少量节点观察 72 小时,再全量推广。
    • 兼容性矩阵与自动化测试:建立 Hive/Spark/Flink 与 Hadoop 的版本矩阵,使用 Jenkins+TestNGApache Bigtop 做回归测试。
    • 统一依赖与镜像仓库:集中管理 Hadoop 客户端 JAR 与依赖版本,避免混用。
    • 监控告警:完善 Prometheus+Grafana 指标与阈值,关注 Block 报告延迟、NodeManager 心跳 等关键指标。

0