小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Hadoop_NameNode_代碼分析_目錄樹(2)

 Chi_Way 2011-07-11

(1)NameNode的內(nèi)存中保存了龐大的目錄樹結(jié)構(gòu),這個結(jié)構(gòu)用來保存文件目錄結(jié)構(gòu)和文件Block之間的映射,這種結(jié)構(gòu)關(guān)系會固化在磁盤上,但是對樹的改動頻繁發(fā)生,什么時候?qū)鋵懭氪疟P呢?把每次操作應(yīng)用到內(nèi)存中的樹上,并把操作記錄成日志文件,每次操作不會改變固化在磁盤上的改動發(fā)生之前的目錄樹,適當(dāng)?shù)臅r候做一次固化操作并記錄時間。

(2)NameNode上面的磁盤目錄結(jié)構(gòu):

[hadoop@localhost dfs]$ ls -R name

name:
current  image  in_use.lock

name/current:
edits  fsimage  fstime  VERSION

name/image:
fsimage

in_use.lock的功能和DataNode的一致。fsimage保存的是文件系統(tǒng)的目錄樹,edits則是文件樹上的操作日志,fstime是上一次新打開一個操作日志的時間(long型)。NameNode成功載入一次fsimage就要把這個時刻記錄在fstime中,fstime表示edits第一條記錄開始記錄的時刻。saveImage的時候需要先寫入中間文件,防止中途斷電。

image/fsimage是一個保護(hù)文件,防止0.13以前的版本啟動(0.13以前版本將fsimage存放在name/image目錄下,如果用0.13版本啟動,顯然在讀fsimage會出錯J)。也就是說寫入fsimage要有兩份。

(3)管理NameNode磁盤目錄的是FSImage,也是繼承Storage類的,和DataStorage類似,有升級回退機(jī)制,暫時不考慮。

(4)FSImage需要支持參數(shù)-importCheckpoint,該參數(shù)用于在某一個checkpoint目錄里加載HDFS的目錄信息,并更新到當(dāng)前系統(tǒng),該參數(shù)的主要功能在方法doImportCheckpoint中。該方法很簡單,通過讀取配置的checkpoint目錄來加載fsimage文件和日志文件,然后利用saveFSImage(下面討論)保存到當(dāng)前的工作目錄,完成導(dǎo)入。

(5)loadFSImage用來在多個目錄中選擇最新的fsimage和edit來載入,最新以及fsimage和edit的一致性由fstime保證,載入過程中對NameNode崩潰的處理要分析saveFSImage的過程在明白。

(6)saveFSImage()的功能正好相反,它將內(nèi)存中的目錄樹持久化,很自然,目錄樹持久化后就可以把日志清空。saveFSImage()會創(chuàng)建edits.new,并把當(dāng)前內(nèi)存中的目錄樹持久化到fsimage.ckpt(fsimage現(xiàn)在還存在),然后重新打開日志文件edits和edits.new,這會導(dǎo)致日志文件edits和edits.new被清空。最后,saveFSImage()調(diào)用rollFSImage()方法。

rollFSImage()上來就把所有的edits.new都改為edits(經(jīng)過了方法saveFSImage,它們都已經(jīng)為空),然后再把fsimage.ckpt改為fsimage。

(7)saveFSImage和loadFSImage為了考慮NameNode突然崩潰的情況使磁盤固化操作得以回滾創(chuàng)建了中間狀態(tài),中間狀態(tài)的描述方式就是在磁盤上建立臨時文件。

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多