在 Linux 环境下升级 HDFS(Hadoop HDFS),通常是 Hadoop 集群整体升级的一部分。下面按常见、稳妥的方式说明,适用于 Apache Hadoop(CDH / HDP 也类似,但工具有差异)。
hadoop version
hdfs version
⚠️ 跨大版本(2→3)必须做滚动升级或停机升级
# 停止 HDFS
stop-dfs.sh
# 备份 NameNode 元数据
cp -r $HADOOP_HOME/data/dfs/name /backup/name-$(date +%F)
cp -r $HADOOP_HOME/etc/hadoop /backup/hadoop-conf-$(date +%F)
适用于 不停机升级
# 1. 升级 NameNode
hdfs dfsadmin -rollingUpgrade prepare
# 2. 逐个升级 DataNode
# 停止一个 DataNode → 替换包 → 启动
# 3. 完成升级
hdfs dfsadmin -rollingUpgrade finalize
stop-dfs.sh
mv hadoop-3.x.x /opt/
ln -s /opt/hadoop-3.x.x $HADOOP_HOME
cp /backup/hadoop-conf-*/core-site.xml $HADOOP_HOME/etc/hadoop/
cp /backup/hadoop-conf-*/hdfs-site.xml $HADOOP_HOME/etc/hadoop/
hdfs namenode -upgrade
start-dfs.sh
hdfs dfsadmin -report
hdfs fsck /
查看日志:
tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.log
hdfs dfsadmin -rollingUpgrade rollback
# 停止集群
stop-dfs.sh
# 恢复旧版本和元数据
mv hadoop-old $HADOOP_HOME
hdfs namenode -rollback
| 问题 | 说明 |
|---|---|
| Java 版本不对 | Hadoop 3.x 需要 Java 8+ |
| 权限问题 | 不要混用 root / hadoop 用户 |
| 配置文件遗漏 | workers、hadoop-env.sh |
| 跨大版本 | 必须测试升级流程 |
你可以告诉我:
我可以给你精确到命令的升级方案。