1. 程式人生 > >NameNode啟動中image檔案處理流程

NameNode啟動中image檔案處理流程

NameNode時與image檔案相關的大概有下面三步操作:

第一步  載入image

NameNode啟動後時首先載入硬碟上的fsimage檔案(保持了整個名稱空間)和edits檔案(保持了名稱空間的操作日誌),在記憶體中merge後將新的fsimage寫到磁碟上,即做一次checkpoint。

其中載入過程如圖1所示:


                                                  圖1 載入image檔案流程

通常NameNode配置兩個目錄來存放fsimage&edits檔案,分佈是本地磁碟和NFS,防止NameNode所在機器磁碟壞掉後資料丟失。

每個目錄下都保持了一個fstime檔案,裡面記錄了最近一次checkpoint時間。NameNode啟動時根據checkpoint時間載入最新的一份資料。

edits.new是個臨時檔案,只有SecondaryNameNode正在做checkpoint的時候存在。

     第二步 儲存image

    NameNode載入完fsimage&edits檔案後,會將merge後的結果寫到磁碟上。寫的過程會對本地磁碟和NFS 依次 做圖2所示的操作。

 

                                       圖2 儲存image檔案流程

這一步做完後,磁碟上有一份原始的fsimage檔案,一份最新checkpoint檔案:fsimage.ckpt,另外edits&edits.new為空檔案(4個位元組)。

    第三步 滾動image檔案

寫完checkpoint後,NameNode會對磁碟上的檔案做一次滾動(重新命名),如圖3所示:

 

                                     圖3 滾動image檔案流程

該步驟將fsimage.ckpt重新命名為fsimage(覆蓋原有fsimage檔案),edits.new重新命名為edits(覆蓋原有edits檔案),並將最新時間戳寫入fstime檔案。