温馨提示×

怎样更新Ubuntu上的Hadoop版本

小樊
46
2025-10-12 11:02:17
栏目: 智能运维

怎样更新Ubuntu上的Hadoop版本
更新Ubuntu系统上的Hadoop版本需遵循谨慎操作原则,优先采用滚动升级(Rolling Upgrade)方式,确保集群服务不中断且数据不丢失。以下是详细步骤:

一、升级前准备

  1. 备份关键数据与配置
    备份HDFS元数据(fsimageedits文件,位于dfs.namenode.name.dir目录)和所有配置文件(core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml等),建议备份到本地或远程存储(如NFS)。同时确认集群状态健康:

    hdfs dfsadmin -report  # 查看所有DataNode是否正常
    yarn node -list         # 查看所有NodeManager是否正常
    
  2. 检查版本兼容性
    阅读新版本Hadoop的官方升级指南(如从2.x升级到3.x),确认新版本与当前版本的兼容性(如HDFS文件格式、YARN资源配置等),重点关注不兼容的配置项变更(如3.x中dfs.replication默认值仍为3,但部分参数名称可能调整)。

  3. 准备新版本安装包
    从Hadoop官方网站(https://hadoop.apache.org/releases.html)下载目标版本的二进制压缩包(如hadoop-3.3.6.tar.gz),避免使用源码包(需自行编译,增加复杂度)。

二、停止Hadoop集群服务

在升级前,需逐个停止集群中的所有服务(从DataNode到NameNode,从NodeManager到ResourceManager),避免服务冲突:

# 停止YARN服务
yarn --daemon stop resourcemanager
yarn --daemon stop nodemanager

# 停止HDFS服务
hdfs --daemon stop datanode
hdfs --daemon stop namenode

三、安装新版本Hadoop

  1. 解压新版本安装包
    将下载的安装包解压到专用目录(如/usr/local),避免与旧版本目录混淆:

    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. 更新环境变量
    修改全局环境变量配置文件(如/etc/profile),将HADOOP_HOME指向新版本目录,并更新PATH变量:

    sudo vim /etc/profile
    

    在文件末尾添加:

    export HADOOP_HOME=/usr/local/hadoop-new
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop  # 确保指向新版本的配置目录
    

    生效配置:

    source /etc/profile
    

    验证环境变量:

    hadoop version  # 应显示新版本信息(如Hadoop 3.3.6)
    

四、迁移与调整配置

  1. 合并配置文件
    将旧版本$HADOOP_HOME/etc/hadoop目录下的自定义配置文件(如core-site.xmlhdfs-site.xml)复制到新版本的配置目录,覆盖同名文件

    cp -r /usr/local/hadoop-old/etc/hadoop/* /usr/local/hadoop-new/etc/hadoop/
    

    重点检查

    • 新版本中废弃或修改的配置项(如dfs.namenode.handler.count在3.x中改为dfs.namenode.handler.count,默认值可能调整);
    • 新增的必需配置项(如3.x中dfs.datanode.data.dir需明确指定数据目录)。
  2. 调整数据目录权限
    确保新版本的dfs.namenode.name.dir(NameNode元数据目录)和dfs.datanode.data.dir(DataNode数据目录)存在且具备正确权限(属主为hadoop用户,权限为755):

    sudo mkdir -p /path/to/namenode/dir /path/to/datanode/dir  # 若目录不存在则创建
    sudo chown -R hadoop:hadoop /path/to/namenode/dir /path/to/datanode/dir
    

五、滚动升级HDFS

滚动升级需先升级NameNode,再逐个升级DataNode,确保HDFS服务不中断:

  1. 升级NameNode
    停止旧版本NameNode,使用新版本启动并进入升级模式

    hdfs --daemon stop namenode  # 停止旧NameNode
    $HADOOP_HOME/bin/hdfs --daemon start namenode -upgrade  # 启动新NameNode并升级
    

    查看升级进度:

    hdfs dfsadmin -upgradeProgress status  # 应显示“Upgrading”状态
    
  2. 升级DataNode
    逐个停止旧版本DataNode,使用新版本启动(每次仅升级一个DataNode,避免集群不可用):

    hdfs --daemon stop datanode  # 在目标DataNode上停止旧服务
    $HADOOP_HOME/bin/hdfs --daemon start datanode  # 启动新服务
    

    重复此步骤,直到所有DataNode均升级完成。

  3. 完成HDFS升级
    确认所有DataNode升级成功后,提交升级(清理旧版本元数据):

    hdfs dfsadmin -finalizeUpgrade
    

六、滚动升级YARN(可选,若升级了YARN版本)

若新版本Hadoop包含YARN组件升级,需先升级ResourceManager,再逐个升级NodeManager

  1. 升级ResourceManager
    停止旧版本ResourceManager,使用新版本启动:

    yarn --daemon stop resourcemanager  # 停止旧ResourceManager
    $HADOOP_HOME/bin/yarn --daemon start resourcemanager  # 启动新ResourceManager
    
  2. 升级NodeManager
    逐个停止旧版本NodeManager,使用新版本启动:

    yarn --daemon stop nodemanager  # 在目标NodeManager上停止旧服务
    $HADOOP_HOME/bin/yarn --daemon start nodemanager  # 启动新服务
    

七、验证升级结果

  1. 检查服务状态
    使用jps命令查看所有必需的守护进程是否正常运行:

    jps
    

    正常应显示:NameNodeDataNodeResourceManagerNodeManager等进程。

  2. 运行测试任务
    提交一个简单的MapReduce任务(如wordcount),验证新版本功能是否正常:

    hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output
    

    检查输出目录/output中的结果文件,确认任务执行成功。

  3. 查看集群状态
    使用Hadoop命令查看集群信息,确认版本已更新:

    hdfs dfsadmin -report  # 查看HDFS集群状态
    yarn node -list         # 查看YARN集群状态
    

八、清理旧版本(可选)

若升级成功且运行稳定,可清理旧版本Hadoop的安装目录(如/usr/local/hadoop-old),释放磁盘空间:

sudo rm -rf /usr/local/hadoop-old

注意事项

  • 回滚准备:若升级过程中出现问题,可通过-rollback命令回滚到旧版本(如hdfs dfsadmin -rollback),但需在升级前确认旧版本数据未被清理。
  • 版本跨度:若升级跨度较大(如从1.x升级到3.x),建议先升级到中间版本(如2.x),再逐步升级到目标版本,减少兼容性问题。
  • 文档参考:务必参考新版本的官方升级指南(如Hadoop 3.x Upgrade Guide),确保操作符合官方要求。

0