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 等上层组件)。
- 回滚方案与演练
- 明确回滚触发条件与步骤(如基于备份的元数据恢复、旧安装包回退、服务回滚脚本);在演练环境验证回滚有效性。
三 标准操作步骤
- 停机升级(通用)
- 停止集群:
${HADOOP_HOME}/sbin/stop-dfs.sh 与 ${HADOOP_HOME}/sbin/stop-yarn.sh(或使用 stop-all.sh)。
- 备份:配置文件与元数据(含 JournalNode 数据目录、ZooKeeper 元数据等)。
- 安装新版本:下载并解压至目标目录(如
/usr/local/hadoop-x.y.z)。
- 迁移配置:将旧版
${HADOOP_HOME}/etc/hadoop/ 下的配置文件复制到新版对应目录,并按新版本要求调整参数。
- 更新环境变量:
HADOOP_HOME 指向新目录,并将 bin/ 与 sbin/ 加入 PATH。
- 启动集群:
${HADOOP_HOME}/sbin/start-dfs.sh 与 ${HADOOP_HOME}/sbin/start-yarn.sh。
- 验证:
hdfs dfsadmin -report、jps、访问 NameNode/ResourceManager Web UI、抽样执行作业。
- 回滚(如失败):按预案恢复备份并重启,或使用旧安装包回退。
- 滚动升级(HDFS HA,尽量不停机)
- 准备:确认集群为 HA,检查新版本对滚动升级的支持说明。
- 初始化:
hdfs dfsadmin -rollingUpgrade prepare。
- 查询状态:
hdfs dfsadmin -rollingUpgrade query(看到 “Proceed with rolling upgrade” 再继续)。
- 执行升级:按节点角色分批重启 JournalNode → DataNode → NameNode(Standby → Active),保持业务尽量不断流。
- 完成或回滚:
- 验证通过后提交:
hdfs dfsadmin -rollingUpgrade finalize;
- 如异常则回滚:
hdfs dfsadmin -rollingUpgrade rollback。
- 验证:检查集群健康、块报告、应用运行情况。
四 升级后验证与回滚
- 快速健康检查
- 守护进程:
jps 确认 NameNode/DataNode/ResourceManager/NodeManager 等进程齐全。
- HDFS:
hdfs dfsadmin -report 检查 容量、可用空间、DataNode 数量;抽样执行 hdfs dfs -ls / 与读写小文件。
- YARN:
yarn application -list、yarn node -list 检查资源与节点状态;提交测试作业验证计算链路。
- Web UI:访问 NameNode/ResourceManager 页面,确认版本号与集群健康。
- 回滚要点
- 停机升级:使用备份的 fsimage 与配置文件恢复,或切换回旧版安装目录并重启。
- 滚动升级:使用
hdfs dfsadmin -rollingUpgrade rollback 回退到升级前状态,再按流程恢复服务。
五 常见问题与最佳实践
- 常见问题
- 客户端与服务端版本不一致导致 IncompatibleClassChangeError 等类冲突,需统一 hadoop-client 版本。
- 配置参数变更或废弃引发作业失败,需对照新版本参数说明逐项校验。
- 滚动升级未按顺序重启或未完成提交/回滚,导致 升级状态不一致,应严格按状态查询与步骤执行。
- 最佳实践
- 灰度/金丝雀发布:先升级少量节点观察 72 小时,再全量推广。
- 兼容性矩阵与自动化测试:建立 Hive/Spark/Flink 与 Hadoop 的版本矩阵,使用 Jenkins+TestNG 或 Apache Bigtop 做回归测试。
- 统一依赖与镜像仓库:集中管理 Hadoop 客户端 JAR 与依赖版本,避免混用。
- 监控告警:完善 Prometheus+Grafana 指标与阈值,关注 Block 报告延迟、NodeManager 心跳 等关键指标。