HDFS緩沖區
Fsimage 文件映射,Edits文件操作記錄。
與ES的緩沖區不同,ES是維護數據的變更,而HDFS緩沖區是用於名結點維護文件系統元數據(目錄樹)的機制。
在HDFS集群中,NameNode結點相較於DataNode數量較少,往往幾個Namenode支撐着幾百個DataNode的元數據和目錄索引。當大量數據存入時,眾多DataNode上同步進行的數據文件更新會在短時間內產生巨量的元數據(文件信息、塊地址)。
想象一個這樣的情況,1000台數據結點同時存入數據,但是只有一個名結點。1000GB的數據產生了10GB的元數據,數據節點很快處理完了1GB的平均數據量,但是名結點卻要處理10GB的數據量,這時數據明明已經存入卻不可用(因為不知道在哪)。
HDFS的FSimage緩沖機制,正是為了解決NameNode上元數據(目錄)更新速度的問題,即NameNode直接在內存上更新元數據(內存更快),快速維護更新目錄信息,並把數據的硬盤寫入操作交由SecondaryNameNode完成(寫入硬盤才能不丟失),這樣便能保證目錄的更新與數據存入相對同步完成。
具體過程:
HDFS啟動時, 文件系統的目錄樹被加載到名節點內存,在Namenode上生成FSimages(元數據文件),此時的FSimages是真實的目錄樹。當發生數據操作的時候,數據請求經過處理后被分發到Datanode上進行存儲,同時NameNode更新存儲在內存中的FSimage,並且將數據操作相關信息保存到內存中的Edits文件。內存中的信息雖然快但是不穩定,如果宕機更新的目錄樹便會丟失,更改過的文件也就找不到了地址了,因此每隔一段時間需要元數據信息(目錄)存儲到磁盤。每過一段時間或者Fimage文件過大,NameNode會將二者發送給副名結點,副結點會完成二者的合並和檢驗,然后將新的FSimage推送到Namenode的硬盤上,同時更新Version文件,讓NameNode使用新版的FSimage(舊版的也不會被刪除)。只有當元數據被寫入到硬盤后,存儲的數據才是真正安全的存入了。