NameNode將文件系統的元數據以不同的文件保存在本地磁盤中,其中最重要的兩個文件是fsimage和edits。fsimage包含文件系統元數據的完整快照,而edits僅包含元數據的增量修改。
NameNode啓動後,直接加載fsimage到RAM,再通過回放引入edits的增量變化。
NameNode與SecondaryNameNode之間交互定期將edits引入fsimage:
SecondaryNameNode引導NameNode滾動更新edits文件,並開始將新的內容寫入edits.new
SecondaryNameNode將NameNode的fsimage和edtis文件複製到本地的檢查點目錄
SecondaryNameNode載入fsimage文件,回放edits內容,將其合併到fsimage,將新的fsimage文件壓縮後寫入磁盤
SecondaryNameNode將新的fsimage文件送回NameNode,NameNode在接收新的fsimage文件後直接加載和應用該文件
NameNode將edits.new更名爲edits
默認情況下,該過程每小時執行一次,或者當NameNode的edits文件達到默認的64MB時也會被觸發