NameNode && Secondary NameNode工作機制 1)工作流程 2) fsimage和edits NameNode是HDFS的大腦,它維護著整個文件系統的目錄樹,以及目錄樹里所有的文件和目錄,這些信息以倆種文件存儲在文件系統:一種是命名空間鏡像(也稱為文件系統鏡像,File Sy ...
NameNode && Secondary NameNode工作機制
1)工作流程
2) fsimage和edits
NameNode是HDFS的大腦,它維護著整個文件系統的目錄樹,以及目錄樹里所有的文件和目錄,這些信息以倆種文件存儲在文件系統:一種是命名空間鏡像(也稱為文件系統鏡像,File System Image,fsimage),即HDFS元數據的完整快照,每次NameNode啟動的時候,預設會載入最新的命名空間鏡像,另一種是命令空間鏡像的編輯日誌(Edit log)。
fsimage文件其實是文件系統元數據的一個永久性檢查點,但並非每一個寫操作都會更新這個文件,因為FSImage是一個大型文件,如果頻繁地執行寫操作,會使系統運行極為緩慢。解決方案是NameNode只將改動內容預寫日誌,即寫入命名空間鏡像的編輯日誌.隨著時間的推移,編輯日誌會變得越來越大,那麼一旦發生故障,將會話費非常多的時間來回滾操作,所以就像傳統的關係資料庫一樣,需要定期地合併fsimage和編輯日誌。如果由NameNode來做合併操作,那麼NameNode在為集群提供服務時可能無法提供足夠的資源,為了徹底解決這一問題,Secondary NameNode應允而生。
3)第一階段:NameNode 啟動
- (1)第一次啟動 NameNode 格式化後,創建 fsimage 和 edits 文件。如果不是第一次啟動,直接載入編輯日誌和鏡像文件到記憶體。
- (2)客戶端對元數據進行增刪改的請求。
- (3)NameNode 記錄操作日誌,更新滾動日誌。
- (4)NameNode 在記憶體中對數據進行增刪改查。
4)第二階段:Secondary NameNode 工作
- (1)Secondary NameNode詢問NameNode是否需要checkpoint。
- (2)Secondary NameNode請求執行checkpoint。
- (3)NameNode滾動正在寫的edits日誌。
- (4)將滾動前的編輯日誌和鏡像文件拷貝到Secondary NameNode。
- (5)Secondary NameNode載入編輯日誌和鏡像文件到記憶體,併合並。
- (6)生成新的鏡像文件fsimage.chkpoint。
- (7)拷貝fsimage.chkpoint到NameNode。
- (8)NameNode將fsimage.chkpoint重新命名成fsimage。
預設情況下,該過程每小時發生一次,或者當NameNode的編輯日誌文件到達預設的64MB也會觸發。