升级Ubuntu环境下Hadoop版本的完整流程(滚动升级方案)
升级Hadoop需优先保证数据安全与服务连续性,推荐采用滚动升级(Rolling Upgrade)策略,逐步替换集群节点,避免全量停机。以下是详细步骤:
备份关键数据与配置
hdfs dfsadmin -report确认NameNode存储路径(dfs.namenode.name.dir),使用hadoop fsimage和edits文件备份元数据(如cp -r /path/to/namenode/dir /backup/namenode_backup)。$HADOOP_HOME/etc/hadoop目录下的core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml等配置文件至安全目录。hdfs dfsadmin -report确认所有DataNode状态为“Live”,无节点异常。确认版本兼容性
查阅新版本Hadoop的官方升级指南(如Hadoop 3.x升级至4.x),重点关注:
dfs.replication默认值调整、yarn.scheduler.maximum-allocation-mb参数含义变化);执行集群停机命令,停止所有运行中的Hadoop进程:
$HADOOP_HOME/sbin/stop-all.sh  # 停止HDFS(NameNode、DataNode)和YARN(ResourceManager、NodeManager)
通过jps命令验证进程是否全部停止(无NameNode、DataNode、ResourceManager、NodeManager等进程)。
下载并解压新版本
从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  # 重命名为新版本目录
更新环境变量
编辑~/.bashrc(或/etc/profile),修改HADOOP_HOME指向新版本路径,并更新PATH:
export HADOOP_HOME=/usr/local/hadoop-new
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
生效配置:source ~/.bashrc。
替换配置文件
将旧版本$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资源分配上限)。滚动升级需按“NameNode→DataNode”顺序逐步推进,确保集群持续可用:
升级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”)
升级DataNode(从节点)
# 在目标DataNode上执行
hdfs --daemon stop datanode  # 停止旧DataNode
$HADOOP_HOME/bin/hdfs --daemon start datanode  # 以新版本启动DataNode
若新版本Hadoop包含YARN组件升级,需按类似HDFS的方式滚动升级:
升级ResourceManager(主节点)
yarn --daemon stop resourcemanager  # 停止旧ResourceManager
$HADOOP_HOME/bin/yarn --daemon start resourcemanager -upgrade  # 以升级模式启动新ResourceManager
升级NodeManager(从节点)
# 在目标NodeManager上执行
yarn --daemon stop nodemanager  # 停止旧NodeManager
$HADOOP_HOME/bin/yarn --daemon start nodemanager  # 以新版本启动NodeManager
确认集群状态
运行以下命令检查各组件是否正常运行:
jps  # 应看到NameNode、DataNode、ResourceManager、NodeManager等进程
hdfs dfsadmin -report  # 确认HDFS节点状态均为“Live”
yarn node -list  # 确认YARN节点状态均为“RUNNING”
提交升级
若升级无异常,提交升级以清理临时文件:
hdfs dfsadmin -finalizeUpgrade  # 提交升级,删除旧版本备份
清理旧版本
删除旧版本Hadoop目录(如/usr/local/hadoop-old),释放磁盘空间。
若升级后出现数据损坏、服务异常等问题,可通过回滚恢复至旧版本:
$HADOOP_HOME/sbin/stop-all.sh# 若为HA集群,需启动旧NameNode(Standby→Active)
hdfs --daemon start namenode -rollback  # 以回滚模式启动NameNode
$HADOOP_HOME/sbin/start-all.sh  # 启动所有服务
hdfs dfs -ls /检查数据是否恢复。注意事项: