NameNode和SecondaryNameNode工作機制
NameNode和SecondaryNameNode工作機制
1.簡單介紹
眾所周知NameNode記錄著DataNode的元資料資訊,那麼他是如何保證元資料資訊的準確性的呢!小小透露一下是通過Fsimage和Edits!
2.圖解
2.1原理介紹
NameNode啟動時,先滾動Edits並生成一個空的edits.inprogress,然後載入Edits和Fsimage到記憶體中,此時NameNode記憶體就持有最新的元資料資訊
1.看到這裡我相信很多人會問Edits 和Fsimage 究竟是什麼?好吧給你簡單的介紹下!
Fsimage:NameNode記憶體中元資料序列化後形成的檔案。
Edits:記錄客戶端更新元資料資訊的每一步操作(可通過Edits運算出元資料)。
2.你能看到的問題官方肯定也是看的到的啊!所以針對啟動載入慢的問題,也就出現了SecondaryNameNode,所以接下來我們來說一說SecondaryNameNode在幹嘛?有時怎麼幹的!
SecondaryNameNode首先會詢問NameNode是否需要CheckPoint(觸發CheckPoint需要滿足兩個條件中的任意一個,定時時間到和Edits中資料寫滿了)
1.預設觸發條件1小時和100W次讀寫操作
2.2流程介紹
2.2.1 第一階段 NameNode啟動
1.第一次啟動NameNode格式化後,建立Fsimage和Edits檔案。如果不是第一次啟動,直接載入編輯日誌和映象檔案到記憶體。
2.客戶端對元資料進行增刪改的請求。
3.NameNode記錄操作日誌,更新滾動日誌。
4.NameNode在記憶體中對資料進行增刪改。
2.2.2 第二階段 Secondary NameNode工作
1.Secondary NameNode詢問NameNode是否需要CheckPoint。直接帶回NameNode檢查結果。
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。
版權宣告:本部落格為記錄本人自學感悟,轉載需註明出處!
https://me.csdn.net/qq_39657909