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