温馨提示×

如何升级CentOS的HDFS

小樊
37
2026-08-05 01:18:47
栏目: 智能运维

CentOS 上升级 HDFS(Hadoop HDFS) 通常指升级 Hadoop 版本。下面按常见、稳妥的方式给你一份完整升级指南,适用于 生产环境测试环境


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

1. 确认当前版本

hadoop version
hdfs version

2. 查看 HDFS 状态

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

✅ 确保:

  • 没有损坏块
  • 没有正在进行的写操作
  • 集群健康

3. 备份关键数据(强烈建议)

备份 NameNode 元数据

mkdir -p /backup/hadoop/namenode
cp -r $HADOOP_HOME/data/dfs/name /backup/hadoop/namenode

备份配置文件

cp -r $HADOOP_HOME/etc/hadoop /backup/hadoop/conf

备份 HDFS 数据(可选)

  • 小集群:直接 distcp
  • 大集群:确保副本数 ≥ 2

4. 规划停机时间

  • HDFS 升级通常需要重启集群
  • 建议 滚动升级(Rolling Upgrade)(Hadoop 2.7+ 支持)

二、升级方式选择

场景 建议方式
Hadoop 2.x → 2.x 滚动升级
Hadoop 2.x → 3.x 停机升级(推荐)
测试环境 直接停机升级
生产环境 滚动升级

三、滚动升级(推荐生产环境)

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 -r $OLD_HADOOP_HOME/etc/hadoop/* $NEW_HADOOP_HOME/etc/hadoop/

⚠️ 注意:

  • hdfs-site.xml
  • core-site.xml
  • workers

3. 启动滚动升级

NameNode 上执行:

hdfs dfsadmin -rollingUpgrade prepare

确认:

hdfs dfsadmin -rollingUpgrade query

4. 升级 DataNode(逐个节点)

每个 DataNode 节点 上:

# 停止旧 DataNode
$HADOOP_HOME/sbin/hadoop-daemon.sh stop datanode

# 使用新版本启动
$NEW_HADOOP_HOME/sbin/hadoop-daemon.sh start datanode

✅ 可逐个节点操作,不影响集群可用性


5. 升级 NameNode(HA 场景)

如果是 HA(两个 NameNode)

# 升级 Standby NameNode
$NEW_HADOOP_HOME/sbin/hadoop-daemon.sh start namenode

# 切换 Active/Standby
hdfs haadmin -failover nn1 nn2

6. 完成滚动升级

hdfs dfsadmin -rollingUpgrade finalize

四、非滚动升级(停机升级)

1. 停止集群

$HADOOP_HOME/sbin/stop-dfs.sh

2. 替换 Hadoop 目录

mv /opt/hadoop /opt/hadoop_old
mv /opt/hadoop-3.x /opt/hadoop

3. 升级 NameNode 元数据

hdfs namenode -upgrade

4. 启动集群

$HADOOP_HOME/sbin/start-dfs.sh

5. 确认升级成功

hdfs dfsadmin -report
hdfs fsck /

五、升级后检查清单 ✅

  • [ ] hadoop version 正确
  • [ ] NameNode / DataNode 正常
  • [ ] HDFS 文件可访问
  • [ ] 没有 missing blocks
  • [ ] 应用(Hive / Spark / HBase)正常

六、常见问题

1. 升级失败如何回滚?

hdfs dfsadmin -rollingUpgrade rollback

或直接恢复:

cp -r /backup/hadoop/namenode/name $HADOOP_HOME/data/dfs/name

2. 升级后 DataNode 启动失败?

  • 检查 dfs.datanode.data.dir
  • 检查权限
  • 查看 hadoop logs

3. CentOS 特殊注意

  • Java 版本(Hadoop 3 推荐 Java 8 / 11)
java -version

七、我可以帮你更精确

你可以告诉我:

  1. 当前 Hadoop 版本
  2. 目标版本
  3. 是否 HA
  4. CentOS 版本
  5. 是否生产环境

我可以给你 一步一步的定制升级方案

0