1)流程

2)FSImage和Edits
nodenode是HDFS的大腦,它維護著整個文件系統的目錄樹,以及目錄樹里所有的文件和目錄,這些信息以倆種文件存儲在文件系統:一種是命名空間鏡像(也稱為文件系統鏡像,File System Image,FSImage),即HDFS元數據的完整快照,每次NameNode啟動的時候,默認會加載最新的命名空間鏡像,另一種是命令空間鏡像的編輯日志(Edit log)。
FSImage文件其實是文件系統元數據的一個永久性檢查點,但并非每一個寫操作都會更新這個文件,因為FSImage是一個大型文件,如果頻繁地執行寫操作,會使系統運行極為緩慢。解決方案是NameNode只將改動內容預寫日志,即寫入命名空間鏡像的編輯日志.隨著時間的推移,編輯日志會變得越來越大,那么一旦發生故障,將會話費非常多的時間來回滾操作,所以就像傳統的關系數據庫一樣,需要定期地合并FSImage和編輯日志。如果由NameNode來做合并操作,那么NameNode在為集群提供服務時可能無法提供足夠的資源,為了徹底解決這一問題,SecondaryNameNode應允而生。
3)第一階段:namenode 啟動
- (1)第一次啟動 namenode 格式化后,創建 fsimage 和 edits 文件。如果不是第一次啟動,直接加載編輯日志和鏡像文件到內存。
- (2)客戶端對元數據進行增刪改的請求。
- (3)namenode 記錄操作日志,更新滾動日志。
- (4)namenode 在內存中對數據進行增刪改查。
4)第二階段:Secondary NameNode 工作
- (1)Secondary NameNode 詢問 namenode 是否需要 checkpoint。直接帶回 namenode 是否檢查結果。
- (2)Secondary NameNode 請求執行 checkpoint。
- (3)Secondary NameNode引導namenode 滾動更新編輯正在寫的 edits 日志。
- (4) Secondary NameNode載入FSImage文件,回放編輯日志,將其合并到FSImage,將新的FSImage文件壓縮后寫入磁盤。
- (5)拷貝 fsimage到 namenode。
- (6)namenode 將 fsimage重新命名成 fsimage。
默認情況下,該過程每小時發生一次,或者當NameNode的編輯日志文件到達默認的64MB也會觸發。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接