不多說,直接上干貨!
首先,要有這個觀念,元數據信息(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一直在變大。一旦達到,就要進行合並。
只要達到這兩個條件的其中一個,都會進行合並。
同時,大家可以關注我的個人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/ http://www.cnblogs.com/sunnyDream/
詳情請見:http://www.cnblogs.com/zlslch/p/7473861.html
人生苦短,我願分享。本公眾號將秉持活到老學到老學習無休止的交流分享開源精神,匯聚於互聯網和個人學習工作的精華干貨知識,一切來於互聯網,反饋回互聯網。
目前研究領域:大數據、機器學習、深度學習、人工智能、數據挖掘、數據分析。 語言涉及:Java、Scala、Python、Shell、Linux等 。同時還涉及平常所使用的手機、電腦和互聯網上的使用技巧、問題和實用軟件。 只要你一直關注和呆在群里,每天必須有收獲
對應本平台的討論和答疑QQ群:大數據和人工智能躺過的坑(總群)(161156071)