在 CentOS 上升级 HDFS,本质上就是升级 Hadoop 的版本。HDFS 是 Hadoop 的一部分,不能单独升级。下面我按生产环境常见做法给你一个完整、清晰的升级流程(从低版本 Hadoop 升级到高版本),并标注注意事项。
hadoop version
hdfs version
hdfs dfsadmin -report
hdfs fsck / -files -blocks -locations
✅ 确保:
cp -r ${HADOOP_HOME}/dfs/name /backup/name-$(date +%F)
如果你用的是 HA:
# 两个 NameNode 都要备份
cp -r ${HADOOP_HOME}/etc/hadoop /backup/hadoop-conf-$(date +%F)
distcp 到新集群| 升级方式 | 适用场景 |
|---|---|
| Rolling Upgrade(滚动升级) ✅ | 生产环境、HA 集群 |
| Full Stop 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 -r /opt/hadoop-2.x/etc/hadoop/* /opt/hadoop-3.x/etc/hadoop/
⚠️ 注意:
hdfs-site.xml、core-site.xml在 Active NameNode 上:
hdfs dfsadmin -rollingUpgrade prepare
确认:
hdfs dfsadmin -rollingUpgrade query
逐个节点执行:
# 停止旧 DataNode
systemctl stop hadoop-datanode
# 用新版本启动
/opt/hadoop-3.x/sbin/hadoop-daemon.sh start datanode
✅ 集群始终保持可用
所有节点升级完成后:
hdfs dfsadmin -rollingUpgrade finalize
stop-dfs.sh
mv /opt/hadoop /opt/hadoop-old
mv /opt/hadoop-3.x /opt/hadoop
start-dfs.sh
Hadoop 会自动升级,或手动:
hdfs namenode -upgrade
完成后再执行:
hdfs namenode -finalize
java -version
systemctl stop firewalld
setenforce 0
确保 HDFS 数据目录权限正确:
chown -R hdfs:hdfs /data/hdfs
hdfs dfsadmin -rollingUpgrade rollback
hdfs namenode -rollback
hdfs dfsadmin -report
hdfs fsck /
hadoop version
你可以直接告诉我:
我可以给你 精确到命令级别的升级方案(比如 2.7 → 3.3,或 CDH / HDP 升级)。