hdfs fsimage和editlog


hdfs fsimage和editlog

fsimage,namenode的元數據鏡像文件,保存在磁盤

editlog,namenode操作日志

fstime,最近一次的checkpoint時間

metadata,一個文件存儲在哪些DataNode節點的哪些位置的元數據信息

datanode上存儲文件名一般為blk……

打開/usr/local/hadoop/etc/hadoop路徑下的 hdfs-site.xml文件,查看其中的dfs.namenode.name.dir的配置值,並打開對應路徑,就能看到

其中FSImage文件則是不同時間的元數據檢查點,記錄了在對應時間節點下HDFS文件系統的目錄和文件信息。

對於文件來說包括了數據塊描述信息、修改時間、訪問時間等;

對於目錄來說包括修改時間、訪問權限控制信息(目錄所屬用戶,所在組)等。

上圖中editlog_inprogress_0000000000000000002文件則代表此狀態下fsimage已經加載到了編號為0000000000000000001的文件

經過部分操作后:

假設editlog_inprogress文件的后綴編號為0000000000000091059,則代表啟動HDFS的時候只需要讀入edits_inprogress_0000000000000091059日志文件和fsimage­_0000000000000091058鏡像文件。

當editlog越來越多,越來越大,在加載fsimage后就需要再加載editlog,就會影響啟動的速度。因此fsimage和editlog在滿足到達一定條件(一定時間或者一定的txns)后就會出發checkpoint機制進行合並。

合並步驟

1、SNN告訴NN滾動inprogress editlog文件,這樣新的操作都會寫到新的editlog文件,同事,NN更新seen_txid

2、SNN通過http get方式從NN獲取最新的fsimage和editlog

3、SNN將fsimage加載到內存,並從editlog中讀取每一次事務,應用到fsimage,這樣就產生了一個新的fsimage

4、SNN將新的fsimage通過http put的方式發送到NN,NN將fsimage保存為臨時fsimage.ckpt文件中

5、NN將fsimage.ckpt文件重命名,此完成了fsimage和editlog的同步

通過hdfs oiv -i fsimage_xxxxxxxxxxxxx指令就能查看fsimage文件內容

還可以用 hdfs oev -i edits_xxxxxxxxxxx -o xxx.xml導出editlog文件至xml文件進行查看

部分內容如下!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM