標籤:
首先,要有這個觀念,中繼資料資訊(fsimage + editslog)。
fsimage是在磁碟
metadata是在記憶體
********************fsimage把記憶體的,序列化到磁碟了。********************
中繼資料資訊(fsimage + editslog),記憶體儲存一份,磁碟儲存一份,,,,,其他有個什麼地方也要儲存一份。
==============》 就如,學校圖書館裡。書庫,為了使得借書運轉,要買多本書存庫。《======================
fsimage:中繼資料鏡像檔案,儲存某一時段NameNode記憶體中繼資料資訊。
在hadoop1.*裡,就是fsimage。
在hadoop2.*裡,還加了尾碼。
聽說過鏡像。 關閉時,將機器記憶體的資訊寫到磁碟,啟動時,將磁碟的東西讀取到記憶體。
edits:動作記錄檔案
比如說,上傳一個檔案或刪除一個檔案,這些操作。
fstime:儲存最近一次checkpoint的時間
比如說,在6月1號買的新電腦,在6月5日,做的第一次還原點,在6月18號,由於中病毒。在6月21號是做的第二次還原點。Checkpoint是儲存最近的那次做還原點的資料。6月18-21日。
namenode始終在記憶體中儲存metadata,用於處理“讀請求”。到有“讀請求”時,namenode會首先寫editlog到磁碟,即向edits(動作記錄檔案)中寫入日誌,成功返回後,才會修改記憶體,並且向用戶端返回。
形象化例子:我client提貨員,向倉庫管理員namenode,請求提貨,在他同意同時,會將這情況寫到editlog,先是將editlog寫到磁碟,成功後,再寫到記憶體。
fsimage載入記憶體 合并edits
|
|
|
新的 fsimage
|
|
|
namenode,替換舊的
條件一:
fs.checkpoint.period
預設是3600秒,每隔一個小時,Secondarynamenode就要下載fsimage和edits,進行資料的同步。
條件二:
fs.checkpoint.size
edits一直在變大。一旦達到,就要進行合并。
只要達到這兩個條件的其中一個,都會進行合并。
HDFS之fsimage、metadata、edits、fstime