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 namenode
hdfs 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 datanode
hdfs dfsadmin -report # 确认DataNode状态为"live",数据块副本数正常
hadoop fs -put、Spark SQL查询)。若集群未开启HA或业务允许短暂中断,可采用停机升级:
stop-dfs.sh # 停止NameNode、DataNode、SecondaryNameNode
cp -r /etc/hadoop/conf /etc/hadoop/conf.old # 备份配置目录
core-site.xml、hdfs-site.xml(如dfs.namenode.name.dir指向新路径)。start-dfs.sh # 启动NameNode、DataNode
hdfs 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.sh
hdfs namenode -rollback # 回滚NameNode元数据
hdfs datanode -rollback # 回滚DataNode数据
start-dfs.sh