温馨提示×

centos hdfs怎么升级

小樊
45
2026-08-20 05:26:29
栏目: 智能运维

CentOS 上升级 HDFS(Hadoop HDFS) 通常分为 滚动升级(Rolling Upgrade)停机升级(Full Stop Upgrade) 两种场景。下面我按 最常用、最安全 的方式给你一个完整说明,适用于 生产环境


一、升级前准备(非常重要)

1️⃣ 确认当前版本

hadoop version
hdfs version

2️⃣ 备份关键数据

必须做

# 备份 NameNode 元数据
cp -r /data/hadoop/dfs/name /data/hadoop/dfs/name.bak

# 备份配置文件
cp -r $HADOOP_HOME/etc/hadoop /data/backup/hadoop-etc.bak

3️⃣ 确认集群健康

hdfs dfsadmin -report
hdfs fsck / -files -blocks -locations

⚠ 不能有 missing block / corrupted block


二、升级方式选择

场景 推荐方式
生产环境 ✅ Rolling Upgrade
测试环境 停机升级
HDFS HA ✅ Rolling Upgrade
非 HA 只能停机

三、Rolling Upgrade(推荐 ✅)

适用条件

  • Hadoop 2.4+
  • HDFS HA 已开启
  • 使用 JournalNode

1️⃣ 下载新版本 Hadoop

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/

2️⃣ 同步配置文件

不要直接覆盖

cp $OLD_HADOOP_HOME/etc/hadoop/* $NEW_HADOOP_HOME/etc/hadoop/

重点检查:

  • hdfs-site.xml
  • core-site.xml
  • yarn-site.xml

3️⃣ 启动 Rolling Upgrade

Active NameNode 上执行:

hdfs dfsadmin -rollingUpgrade prepare

查看状态:

hdfs dfsadmin -rollingUpgrade query

✅ 出现 Proceed with rolling upgrade 才能继续


4️⃣ 逐个升级 DataNode(无感知)

升级一个 DataNode

# 停止 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

✅ 可一个一个节点升级,不影响集群


5️⃣ 升级 Standby NameNode

# 停 Standby NN
systemctl stop hadoop-namenode

# 切换版本
export HADOOP_HOME=/opt/hadoop-3.x.x

# 启动
systemctl start hadoop-namenode

6️⃣ 切换 Active NameNode

hdfs haadmin -failover nn1 nn2

然后升级原来的 Active NN(现在变成 Standby)


7️⃣ 完成 Rolling Upgrade

hdfs dfsadmin -rollingUpgrade finalize

✅ 升级完成


四、停机升级(简单但不可用)

1️⃣ 停止集群

stop-dfs.sh

2️⃣ 替换 Hadoop 版本

mv /opt/hadoop /opt/hadoop-old
ln -s /opt/hadoop-3.x.x /opt/hadoop

3️⃣ 启动集群

start-dfs.sh

五、常见问题

❌ NameNode 起不来

hadoop namenode -recover

⚠ 慎用,优先回滚

❌ 版本不兼容

  • Hadoop 2 → 3 必须升级
  • 不能直接降级

六、升级建议

✅ 生产环境:

  • 使用 Rolling Upgrade
  • 先升级测试集群
  • 提前准备回滚方案

✅ 推荐顺序:

JournalNode → DataNode → Standby NN → Active NN

七、我可以继续帮你

你可以直接告诉我: 1️⃣ CentOS 版本
2️⃣ Hadoop 当前版本 → 目标版本
3️⃣ 是否 HA
4️⃣ 是否生产环境

我可以给你 精确到命令级别的升级方案

0