NameNode && Secondary NameNode工做機制

NameNode && Secondary NameNode工做機制

1)工做流程

2)  fsimage和edits

NameNode是HDFS的大腦,它維護着整個文件系統的目錄樹,以及目錄樹裏全部的文件和目錄,這些信息以倆種文件存儲在文件系統:一種是命名空間鏡像(也稱爲文件系統鏡像,File System Image,fsimage),即HDFS元數據的完整快照,每次NameNode啓動的時候,默認會加載最新的命名空間鏡像,另外一種是命令空間鏡像的編輯日誌(Edit log)。數據庫

fsimage文件實際上是文件系統元數據的一個永久性檢查點,但並不是每個寫操做都會更新這個文件,由於FSImage是一個大型文件,若是頻繁地執行寫操做,會使系統運行極爲緩慢。解決方案是NameNode只將改動內容預寫日誌,即寫入命名空間鏡像的編輯日誌.隨着時間的推移,編輯日誌會變得愈來愈大,那麼一旦發生故障,將會話費很是多的時間來回滾操做,因此就像傳統的關係數據庫同樣,須要按期地合併fsimage和編輯日誌。若是由NameNode來作合併操做,那麼NameNode在爲集羣提供服務時可能沒法提供足夠的資源,爲了完全解決這一問題,Secondary NameNode應允而生。日誌

3)第一階段:NameNode 啓動

  • (1)第一次啓動 NameNode 格式化後,建立 fsimage 和 edits 文件。若是不是第一次啓動,直接加載編輯日誌和鏡像文件到內存。
  • (2)客戶端對元數據進行增刪改的請求。
  • (3)NameNode 記錄操做日誌,更新滾動日誌。
  • (4)NameNode 在內存中對數據進行增刪改查。

4)第二階段:Secondary NameNode 工做

  • (1)Secondary NameNode詢問NameNode是否須要checkpoint。
  • (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。

默認狀況下,該過程每小時發生一次,或者當NameNode的編輯日誌文件到達默認的64MB也會觸發。blog

相關文章
相關標籤/搜索