温馨提示×

Ubuntu HDFS升级如何进行

小樊
35
2025-12-06 22:59:57
栏目: 智能运维

Ubuntu 上 HDFS 升级实操指南

一 升级策略与前置检查

  • 明确升级路径:确认从 Hadoop 2.x → 3.x 或其他版本跨度,阅读目标版本的官方升级说明与变更清单。
  • 兼容性核对:检查 Ubuntu 版本(如 22.04/24.04)Java(推荐 OpenJDK 11+)、以及与 ZooKeeper/Hive/Spark 等组件的版本兼容性与 API 变更。
  • 备份关键资产:
    • HDFS 数据:优先备份业务目录(如 /user),可用 distcp/hadoop fs -cp 跨集群或到远端存储。
    • 元数据与配置:完整备份 NameNode 元数据目录(dfs.namenode.name.dir)JournalNode 目录、以及 core-site.xml/hdfs-site.xml/yarn-site.xml/mapred-site.xml 等。
  • 依赖与资源:确保节点安装所需依赖(如 libsnappy、zlib),并预留 磁盘空间NameNode 堆内存
  • 方案选择:
    • HA 集群优先滚动升级(Rolling Upgrade),基本不停机;
    • 非 HA 或无法滚动时采用停机升级
  • 建议在 测试环境演练 全流程并验证回滚预案。

二 停机升级步骤(非 HA 或允许维护窗口)

  • 检查与停机:
    • 查看状态:执行 hdfs dfsadmin -report
    • 安全停机:按序停止 SecondaryNameNode → DataNodes → NameNode(如使用 systemd 则执行相应服务停止)。
  • 安装新版本:下载并解压 Apache Hadoop 新版本至目标目录(如 /usr/local/hadoop-3.x),更新 HADOOP_HOME/PATH 等环境变量。
  • 迁移配置:将旧配置中关键项(如 fs.defaultFS、dfs.replication、dfs.namenode.name.dir、dfs.datanode.data.dir)合并到新版本配置,避免路径与端口不一致。
  • 执行升级:
    • 启动 NameNode 升级:执行 hdfs namenode -upgrade,并通过 hdfs dfsadmin -upgradeProgress 观察进度;
    • 启动 JournalNode(若启用 QJM/共享编辑日志);
    • 逐个启动 DataNode
  • 验证与收尾:
    • 健康检查:hdfs dfsadmin -report、NameNode Web UI(默认 9870 端口)、简单读写测试;
    • 确认无误后执行 hdfs dfsadmin -finalizeUpgrade 完成升级(此操作不可逆)。

三 滚动升级步骤(HA 集群,尽量不停机)

  • 准备阶段:
    • Standby NameNode 执行:hdfs dfsadmin -rollingUpgrade prepare
    • 查询状态:hdfs dfsadmin -rollingUpgrade query,待返回 “Proceed with rolling upgrade” 再继续。
  • 升级 NameNode:
    • Active NameNode 执行:hdfs dfsadmin -rollingUpgrade start
    • 按序升级 Standby → Active(通过 hdfs haadmin -failover 切换),确保切换后原 Active 完成升级并作为 Standby 重启。
  • 升级 DataNode:
    • 按机架/批次滚动升级,逐台执行:
      • 优雅关闭:hdfs dfsadmin -shutdownDatanode <dn_host>:<ipc_port> upgrade
      • 启动新版本:hadoop-daemon.sh start datanode(会自动完成数据目录升级)。
  • 完成与回滚:
    • 全部节点升级并验证后执行:hdfs dfsadmin -rollingUpgrade finalize(不可逆);
    • 若异常,按预案回滚:hdfs dfsadmin -rollingUpgrade rollback,并使用旧版本二进制重启集群。

四 升级后验证与回滚

  • 功能与性能验证:
    • 基础命令:hdfs dfs -ls /hdfs dfs -put/gethadoop jar hadoop-mapreduce-examples.jar wordcount
    • 监控指标:hdfs dfsadmin -reportNameNode Web UI(:9870)DataNode 日志块报告与缺失块
    • 上下游兼容性:验证 Hive/Spark/Flink 等组件读写正常。
  • 常见问题处理:
    • 配置路径/权限不一致导致启动失败;
    • 依赖库缺失(如 libsnappy、zlib)导致 DataNode/NameNode 异常;
    • 升级后 副本数不足块丢失,需结合 dfs.replication 与修复工具处理。
  • 回滚要点:
    • 滚动升级回滚:使用 -rollingUpgrade rollback 并重启旧版本;
    • 停机升级回滚:NameNode 以 -rollback 启动恢复旧元数据;
    • 回滚前确保 未执行 finalizeUpgrade,并保留旧版本安装与配置。

0