fsimage文件丢失_hadoop fsimage edits关系
fsimage = name table? ,? 存放namonode中所有數據,運行時數據加載到內存中存放
edits_inprogress 類似于LSM樹中的Log,在向hdfs寫的過程都向此文件存放,
當存的數據到一定程度/或者定期間隔多久,會把此文件內容跟新到fsimage
剛開始寫數據時會同時向namonode內存和edit中寫,
此時立刻讀取剛寫入的數據是讀取namenode內存和原fsimage內存的數據,
在當edits的數據合并到fsimage時,在讀取寫入的那個數據就會在fsimage中讀取。
1.SNN CheckPoint的處理流程
配置中配置做CheckPoint的兩個條件,一個是文件大小editlog大于多大就做,另一個是時間維度,多長時間做一次。
(1)SNN首先檢查是否需要進行checkpoint操作,如果上面兩個條件任何一個滿足了就可以
(2)通過RPC 向NameNode發送請求,rollEditLog()NameNode關閉現在的edit的stream,同時生成一個edit.new,并打開加入寫入的源。
(3)SNN從NN處download fsimage文件和edit文件并進行merge
(4)merge結束后通知NN從SNN處拉去FSImage文件保存在NN的FSImage.ckpt上面
(5)一切順利結束的話將edit.new重命名為edit,并open stream,將FSImage.ckpt重命名為FSImage,更新FSTime文件,更新時間戳
2、NN重啟對Image和Edits的處理
先對各個目錄的image和edit文件有效性進行判斷,同時讀取checkpoint的最近值。
如果image.ckpt存在,同時edit.new存在那么也許正進行一半,無法確定是否完成image拉取,刪掉image.ckpt。否則將image.ckpt rename到image。
然后正常的讀取FSImage,將edit merge進去。
如果存在edit.new 也merge進去。
總結
以上是生活随笔為你收集整理的fsimage文件丢失_hadoop fsimage edits关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: window上安装mysql_在wind
- 下一篇: java 僵尸进程_孤儿进程与僵尸进程