温馨提示×

Linux下Hadoop如何进行版本升级

小樊
42
2025-10-14 06:12:33
栏目: 智能运维

Linux下Hadoop版本升级详细步骤及注意事项

一、升级前准备

  1. 确认当前版本
    执行hadoop version命令,明确当前Hadoop的主版本号(如3.3.0)和次版本号(如3.3.6),判断是否需要跨主版本升级(如2.x→3.x)。
  2. 备份关键数据
    • 备份配置文件:cp -r $HADOOP_HOME/etc/hadoop /backup/hadoop_config_backup(保留core-site.xml、hdfs-site.xml、yarn-site.xml等自定义配置);
    • 备份HDFS数据:hadoop fs -copyToLocal / $BACKUP_DIR/hdfs_data(可选,若数据量大可选择增量备份);
    • 备份YARN日志:cp -r $HADOOP_HOME/logs /backup/yarn_logs(用于问题排查)。
  3. 查阅新版本文档
    访问Hadoop官网(apache.org)下载页面,查看新版本的Release Notes,重点关注:
    • 不兼容变更(如配置项调整、API变动);
    • 升级必需的依赖(如Java版本升级,如Hadoop 3.x要求Java 8+);
    • 新增功能及已知问题。
  4. 检查依赖兼容性
    根据新版本要求,确认系统已安装匹配的依赖:
    • Java:java -version(如Hadoop 3.3.6需Java 8或11);
    • SSH:ssh localhost(需免密登录);
    • 其他:ZooKeeper(如启用HA)、Protocol Buffers(如新版本要求的版本)。

二、停止Hadoop集群

  1. 停止所有服务
    进入Hadoop的sbin目录,依次执行:
    ./stop-yarn.sh # 停止YARN服务 ./stop-dfs.sh # 停止HDFS服务 
    使用jps命令确认所有守护进程(NameNode、DataNode、ResourceManager、NodeManager等)已停止。

三、下载并解压新版本

  1. 下载新版本
    使用wget命令下载官方压缩包(以Hadoop 3.3.6为例):
    wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz 
    校验压缩包完整性(如通过MD5或SHA256值)。
  2. 解压并替换旧版本
    解压至目标目录(如/usr/local):
    tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/ 
    备份旧版本(可选但推荐):
    mv /usr/local/hadoop /usr/local/hadoop_old 
    重命名新版本目录:
    mv /usr/local/hadoop-3.3.6 /usr/local/hadoop ```。 

四、更新环境变量

  1. 修改配置文件
    编辑~/.bashrc(或~/.bash_profile),更新HADOOP_HOMEPATH
    export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 
  2. 使配置生效
    执行source ~/.bashrc,验证环境变量:
    echo $HADOOP_HOME # 应输出新版本路径 hadoop version # 应显示新版本号 ```。 

五、迁移与更新配置文件

  1. 恢复自定义配置
    将备份的配置文件复制到新版本的etc/hadoop目录:
    cp -r /backup/hadoop_config_backup/* $HADOOP_HOME/etc/hadoop/ 
  2. 检查配置兼容性
    • 确认core-site.xml中的fs.defaultFS路径是否与新版本兼容(如Hadoop 3.x默认端口从8020改为9000);
    • 确认hdfs-site.xml中的dfs.namenode.name.dirdfs.datanode.data.dir路径是否存在且权限正确(需为hadoop:hadoop);
    • 确认yarn-site.xml中的yarn.resourcemanager.hostnameyarn.nodemanager.aux-services等配置是否符合新版本要求。

六、启动集群并执行升级

  1. 启动HDFS
    执行start-dfs.sh启动HDFS服务,若为新版本首次启动,需添加-upgrade参数触发文件系统升级:
    $HADOOP_HOME/sbin/start-dfs.sh -upgrade 
    此命令会将HDFS的元数据(如NameNode的fsimageedits文件)升级到新版本格式。
  2. 检查升级进度
    使用以下命令实时查看升级状态:
    hadoop dfsadmin -upgradeProgress status # 查看简要状态 hadoop dfsadmin -upgradeProgress details # 查看详细步骤(如元数据转换进度) 
    若升级卡住,可使用force参数强制继续(需谨慎,可能导致数据不一致)。
  3. 启动YARN
    启动YARN服务:
    $HADOOP_HOME/sbin/start-yarn.sh 
    使用yarn application -list验证YARN是否正常运行。

七、验证升级结果

  1. 检查集群状态
    • HDFS:hdfs dfs -ls /(查看根目录是否存在);
    • YARN:yarn node -list(查看节点是否注册);
    • 进程:jps(应存在NameNode、DataNode、ResourceManager、NodeManager等进程)。
  2. 运行测试任务
    提交一个简单的MapReduce任务(如hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 10 100),验证任务是否能正常执行并输出结果。

八、完成升级(可选)

  1. 清理旧版本备份
    若升级后运行稳定(建议观察7天以上),可执行以下命令删除旧版本备份,释放空间:
    hadoop dfsadmin -finalizeUpgrade 
    执行后,rollback命令将失效,无法回退到旧版本。

九、回滚计划(若升级失败)

  1. 停止新版本服务
    $HADOOP_HOME/sbin/stop-dfs.sh $HADOOP_HOME/sbin/stop-yarn.sh 
  2. 恢复旧版本
    将备份的旧版本目录重命名回hadoop,恢复环境变量,重启服务即可。

注意事项

  • 跨主版本升级(如2.x→3.x)需特别注意配置项变更(如Hadoop 3.x移除了dfs.replication的默认值,需显式配置);
  • 若使用HDFS HA(高可用),升级前需确保ZooKeeper集群正常,升级过程中需同步更新ZooKeeper中的元数据;
  • 生产环境建议先在测试集群验证升级流程,避免直接操作生产数据。

0