HDFS版本升级需根据集群规模、业务连续性要求选择滚动升级(不中断服务,生产环境首选)或停机升级(小规模测试环境)。核心逻辑是备份元数据→升级备节点→切换主备→滚动升级DataNode→验证集群,确保数据完整性与服务连续性。

fsimage、edits文件)是HDFS的核心,升级前需完整备份。可通过以下命令备份Active NameNode的元数据:hdfs dfsadmin -backupMetadata /path/to/backup# 备份到指定目录ls /path/to/backup/current# 验证备份文件(fsimage、edits)是否存在hadoop-3.x.x.tar.gz),并校验文件完整性(如MD5)。core-site.xml、hdfs-site.xml)、数据目录(dfs.namenode.name.dir)、日志路径,以便升级失败时快速回滚。滚动升级通过逐节点替换版本,保证集群始终有可用副本,业务无中断。适用于开启HA(高可用)的集群。
hdfs --daemon stop namenode# 若集群开启HA,需指定Standby节点/opt/hadoop-3.x.x),并更新环境变量(HADOOP_HOME)。hdfs --daemon start namenodehdfs haadmin -getServiceState nn1# 检查Standby节点状态(应为"standby")hdfs dfsadmin -report# 确认元数据同步正常hdfs haadmin -failover nn1 nn2# 将nn1(原Active)切换至nn2(原Standby)hdfs haadmin -getServiceState nn1# 应为"standby"hdfs haadmin -getServiceState nn2# 应为"active"hdfs --daemon stop namenode# 指定原Active节点hdfs namenode -upgrade# 以升级模式启动,加载新版本元数据hdfs dfsadmin -report# 确认NameNode运行正常,元数据版本已更新hdfs --daemon stop datanode# 指定DataNode主机hdfs --daemon start datanodehdfs dfsadmin -report# 确认DataNode状态为"live",数据块副本数正常hadoop fs -put、Spark SQL查询)。若集群未开启HA或业务允许短暂中断,可采用停机升级:
stop-dfs.sh# 停止NameNode、DataNode、SecondaryNameNodecp -r /etc/hadoop/conf /etc/hadoop/conf.old# 备份配置目录core-site.xml、hdfs-site.xml(如dfs.namenode.name.dir指向新路径)。start-dfs.sh# 启动NameNode、DataNodehdfs namenode -upgrade# 执行元数据升级hdfs dfsadmin -report# 确认所有节点运行正常hdfs dfsadmin -report# 查看NameNode、DataNode状态(均为"live")hadoop fs -put /local/file /hdfs/path# 上传文件hadoop fs -get /hdfs/path /local/dir # 下载文件hadoop fs -ls /hdfs/path # 列出目录若升级后出现问题,需在滚动升级未完成或停机升级后短时间内执行回滚:
stop-dfs.shhdfs namenode -rollback# 回滚NameNode元数据hdfs datanode -rollback# 回滚DataNode数据start-dfs.sh