ubuntu

如何升级 Ubuntu Hadoop 版本

小樊
40
2025-10-25 06:55:59
栏目: 智能运维

升级Ubuntu环境下Hadoop版本的完整流程(滚动升级方案)
升级Hadoop需优先保证数据安全与服务连续性,推荐采用滚动升级(Rolling Upgrade)策略,逐步替换集群节点,避免全量停机。以下是详细步骤:

一、升级前准备

  1. 备份关键数据与配置

    • 备份HDFS元数据:执行hdfs dfsadmin -report确认NameNode存储路径(dfs.namenode.name.dir),使用hadoop fsimageedits文件备份元数据(如cp -r /path/to/namenode/dir /backup/namenode_backup)。
    • 备份配置文件:复制$HADOOP_HOME/etc/hadoop目录下的core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml等配置文件至安全目录。
    • 检查集群健康:运行hdfs dfsadmin -report确认所有DataNode状态为“Live”,无节点异常。
  2. 确认版本兼容性
    查阅新版本Hadoop的官方升级指南(如Hadoop 3.x升级至4.x),重点关注:

    • 配置项变更(如dfs.replication默认值调整、yarn.scheduler.maximum-allocation-mb参数含义变化);
    • 文件格式兼容性(如HDFS NameNode/DataNode的布局版本是否需要升级);
    • 组件依赖要求(如JDK版本需升级至11及以上,若从Hadoop 2.x升级至3.x)。

二、停止Hadoop集群服务

执行集群停机命令,停止所有运行中的Hadoop进程:

$HADOOP_HOME/sbin/stop-all.sh  # 停止HDFS(NameNode、DataNode)和YARN(ResourceManager、NodeManager)

通过jps命令验证进程是否全部停止(无NameNodeDataNodeResourceManagerNodeManager等进程)。

三、部署新版本Hadoop

  1. 下载并解压新版本
    从Apache Hadoop官网下载目标版本(如hadoop-3.3.6.tar.gz),解压至Ubuntu指定目录(如/usr/local):

    wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
    sudo tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/
    sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop-new  # 重命名为新版本目录
    
  2. 更新环境变量
    编辑~/.bashrc(或/etc/profile),修改HADOOP_HOME指向新版本路径,并更新PATH

    export HADOOP_HOME=/usr/local/hadoop-new
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    

    生效配置:source ~/.bashrc

  3. 替换配置文件
    将旧版本$HADOOP_HOME/etc/hadoop中的配置文件复制到新版本对应目录,重点修改以下配置

    • core-site.xml:更新fs.defaultFS(如从hdfs://old-namenode:9000改为hdfs://new-namenode:9000);
    • hdfs-site.xml:调整dfs.replication(如从3改为2,节省存储)、dfs.namenode.handler.count(如从10改为20,提升NameNode并发能力);
    • yarn-site.xml:修改yarn.scheduler.maximum-allocation-mb(如从8192改为16384,提升YARN资源分配上限)。

四、滚动升级HDFS(核心步骤)

滚动升级需按“NameNode→DataNode”顺序逐步推进,确保集群持续可用:

  1. 升级NameNode(主节点)

    • 启动NameNode并进入升级模式:
      hdfs --daemon stop namenode  # 停止旧NameNode
      $HADOOP_HOME/bin/hdfs --daemon start namenode -upgrade  # 以升级模式启动新NameNode
      
    • 验证升级进度:
      hdfs dfsadmin -upgradeProgress status  # 查看整体进度(如“Upgrading”表示进行中)
      hdfs dfsadmin -upgradeProgress details  # 查看详细步骤(如“Copying fsimage”、“Saving checkpoint”)
      
  2. 升级DataNode(从节点)

    • 逐个停止并重启DataNode(避免批量重启导致数据不可用):
      # 在目标DataNode上执行
      hdfs --daemon stop datanode  # 停止旧DataNode
      $HADOOP_HOME/bin/hdfs --daemon start datanode  # 以新版本启动DataNode
      
    • 重复上述步骤,直至所有DataNode升级完成。

五、升级YARN(可选,若版本包含YARN升级)

若新版本Hadoop包含YARN组件升级,需按类似HDFS的方式滚动升级:

  1. 升级ResourceManager(主节点)

    yarn --daemon stop resourcemanager  # 停止旧ResourceManager
    $HADOOP_HOME/bin/yarn --daemon start resourcemanager -upgrade  # 以升级模式启动新ResourceManager
    
  2. 升级NodeManager(从节点)

    # 在目标NodeManager上执行
    yarn --daemon stop nodemanager  # 停止旧NodeManager
    $HADOOP_HOME/bin/yarn --daemon start nodemanager  # 以新版本启动NodeManager
    

六、完成升级

  1. 确认集群状态
    运行以下命令检查各组件是否正常运行:

    jps  # 应看到NameNode、DataNode、ResourceManager、NodeManager等进程
    hdfs dfsadmin -report  # 确认HDFS节点状态均为“Live”
    yarn node -list  # 确认YARN节点状态均为“RUNNING”
    
  2. 提交升级
    若升级无异常,提交升级以清理临时文件:

    hdfs dfsadmin -finalizeUpgrade  # 提交升级,删除旧版本备份
    
  3. 清理旧版本
    删除旧版本Hadoop目录(如/usr/local/hadoop-old),释放磁盘空间。

七、回滚方案(可选,应对升级失败)

若升级后出现数据损坏、服务异常等问题,可通过回滚恢复至旧版本:

  1. 停止新版本集群$HADOOP_HOME/sbin/stop-all.sh
  2. 启动旧版本集群
    # 若为HA集群,需启动旧NameNode(Standby→Active)
    hdfs --daemon start namenode -rollback  # 以回滚模式启动NameNode
    $HADOOP_HOME/sbin/start-all.sh  # 启动所有服务
    
  3. 验证数据:通过hdfs dfs -ls /检查数据是否恢复。

注意事项

0
看了该问题的人还看了