NameNode(名稱節點,簡稱NN)做用:
- 文件系統命名空間,維護文件系統目錄樹
- 存儲文件名稱,
- 文件目錄結構,
- 文件屬性(權限,大小,建立時間,副本數及大小....),
- 文件對應的數據塊及這些塊所對應的數據節點,咱們稱爲blockmap,這種映射關係存儲在NN中,可是並不會持久化這種關係,這個映射關係由DN在啓動的時候上報給NN。
以上關係由fsimage+editslog來存儲。node
DataNode(數據節點,簡稱DN)做用:
- 存儲數據塊及塊校驗(爲了防止塊損壞帶來的數據讀取錯誤)
- 每隔3秒與NN通訊併發送一個心跳包;每10個心跳包向NN上報blockReport
SecondaryNameNode(輔助名稱節點,簡稱SNN):
- 存儲fsimage,editslog;
- 按期合併fsimage+editslog,合併時機由檢查點(checkpoint)決定,檢查點由dfs.namenode.checkpoint.period 參數定義,默認3600秒。
SNN每隔一個小時從NN上備份fsimage下來併發
fsimage 鏡像文件,系統鏡像文件,系統全量文件spa
editslog操做日誌,讀寫記錄操做,系統增量文件日誌
客戶端向DN寫數據,若是副本數是3,客戶端只須要寫入1分數據,而後拷貝。blog
SNN流程:

SNN每隔一小時從NN上下載fsimage和edits文件,在SNN節點合併生成新的fsimage,合併完成後 把這個新的fsimage文件推送到NN節點替換掉原來的fsimage,在fsimage合併期間,NN節點的全部的操做都記錄在edits中,這個時候 NN節點就有新的fsimage文件和edits文件。it