HDFS名稱節點工做過程

1、名稱節點(NameNode)

1.什麼是名稱節點node

在HDFS中,名稱節點負責管理分佈式文件系統的命名空間(Namespace),保存了兩個核心的數據結構-FsImage和EditLog。安全

  • FsImage:用於維護文件系統樹以及文件樹中全部的文件和文件夾的元數據。
  • EditLog:中記錄全部針對文件建立、刪除、重命名等操做的日誌文件。

名稱節點記錄了每一個文件中各個塊所在的數據節點的位置信息,但並不持久化存儲這些信息,而是在系統每次啓動時掃描全部數據節點重構獲得這些信息。數據結構

2.名稱節點工做過程分佈式

名稱節點啓動時,會將FsImage的內容加載到內存當中,而後執行EditLog文件中的各項操做,使得內存中的元數據保存最新。這個操做完成後,就會建立一個新的FsImage文件和一個空的EditLog文件。名稱節點啓動成功並進入正常運行狀態之後,HDFS中的更新操做都會被寫入到EditLog,而不是直接寫入FsImage(文件大,直接寫入系統會變慢)。函數

名稱節點在啓動的過程當中處於「安全模式」,只能對外提供讀操做。啓動結束後,則進入正常運行狀態,對外提供讀寫操做。post

2、第二名稱節點(Secondary NameNode)
1.功能學習

在名稱節點運行期間,EditLog文件因爲操做不斷髮生會逐漸變大,爲解決逐漸變大帶來的問題,故採用了第二名稱節點。spa

  • 能夠完成EditLog與FsImage的合併操做,減小EditLog文件大小,縮短名稱節點重啓時間
  • 做爲名稱節點的「檢查點」,保存名稱節點中的元數據信息。

2.工做過程設計

  1. SecondaryNameNode會按期和NameNode通訊,請求其中止使用EditLog文件,暫時將新的寫操做寫到一個新的文件edit.new上來,這個操做是瞬間完成,上層寫日誌的函數徹底感受不到差異。
  2. SecondaryNameNode經過HTTP GET方式從NameNode上獲取到FsImage和EditLog文件,並下載到本地的相應目錄下。
  3. SecondaryNameNode將下載下來的FsImage載入到內存,而後一條一條地執行EditLog文件中的各項更新操做,使得內存中的FsImage保持最新;這個過程就是EditLog和FsImage文件合併。
  4. SecondaryNameNode執行完(3)操做以後,會經過post方式將新的FsImage文件發送到NameNode節點。
  5. NameNode將從SecondaryNameNode接收到的新的FsImage替換舊的FsImage文件,同時將edit.new替換EditLog文件,經過這個過程EditLog就變小了。

HDFS設計中,並不支持把系統直接切換到第二名稱節點,從這角度,第二名稱節點只是起到名稱節點「檢查點」的做用,並不能起到「熱備份」做用。即便有了第二名稱節點的存在,當名稱節點發生故障時,系統仍是有可能會丟失部分元數據信息。日誌

Reference:
dblab.xmu.edu.cn


學習交流,有任何問題還請隨時評論指出交流。

相關文章
相關標籤/搜索