在 CentOS 上升级 HDFS(Hadoop HDFS) 通常分为 滚动升级(Rolling Upgrade) 和 停机升级(Full Stop Upgrade) 两种场景。下面我按 最常用、最安全 的方式给你一个完整说明,适用于 生产环境。
hadoop version
hdfs version
✅ 必须做
# 备份 NameNode 元数据
cp -r /data/hadoop/dfs/name /data/hadoop/dfs/name.bak
# 备份配置文件
cp -r $HADOOP_HOME/etc/hadoop /data/backup/hadoop-etc.bak
hdfs dfsadmin -report
hdfs fsck / -files -blocks -locations
⚠ 不能有 missing block / corrupted block
| 场景 | 推荐方式 |
|---|---|
| 生产环境 | ✅ Rolling Upgrade |
| 测试环境 | 停机升级 |
| HDFS HA | ✅ Rolling Upgrade |
| 非 HA | 只能停机 |
wget https://downloads.apache.org/hadoop/common/hadoop-3.x.x/hadoop-3.x.x.tar.gz
tar -zxvf hadoop-3.x.x.tar.gz -C /opt/
⚠ 不要直接覆盖
cp $OLD_HADOOP_HOME/etc/hadoop/* $NEW_HADOOP_HOME/etc/hadoop/
重点检查:
hdfs-site.xmlcore-site.xmlyarn-site.xml在 Active NameNode 上执行:
hdfs dfsadmin -rollingUpgrade prepare
查看状态:
hdfs dfsadmin -rollingUpgrade query
✅ 出现 Proceed with rolling upgrade 才能继续
# 停止 DN
systemctl stop hadoop-datanode
# 切换 Hadoop 版本
export HADOOP_HOME=/opt/hadoop-3.x.x
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
# 启动 DN
systemctl start hadoop-datanode
✅ 可一个一个节点升级,不影响集群
# 停 Standby NN
systemctl stop hadoop-namenode
# 切换版本
export HADOOP_HOME=/opt/hadoop-3.x.x
# 启动
systemctl start hadoop-namenode
hdfs haadmin -failover nn1 nn2
然后升级原来的 Active NN(现在变成 Standby)
hdfs dfsadmin -rollingUpgrade finalize
✅ 升级完成
stop-dfs.sh
mv /opt/hadoop /opt/hadoop-old
ln -s /opt/hadoop-3.x.x /opt/hadoop
start-dfs.sh
hadoop namenode -recover
⚠ 慎用,优先回滚
✅ 生产环境:
✅ 推荐顺序:
JournalNode → DataNode → Standby NN → Active NN
你可以直接告诉我:
1️⃣ CentOS 版本
2️⃣ Hadoop 当前版本 → 目标版本
3️⃣ 是否 HA
4️⃣ 是否生产环境
我可以给你 精确到命令级别的升级方案 ✅