網(wǎng)站性能檢測(cè)評(píng)分
注:本網(wǎng)站頁(yè)面html檢測(cè)工具掃描網(wǎng)站中存在的基本問(wèn)題,僅供參考。
文件數(shù)據(jù)管理
好程序員:Namenode元數(shù)據(jù)管理 流量視頻課程
在NameNode運(yùn)行時(shí)會(huì)將內(nèi)存中的元數(shù)據(jù)信息存儲(chǔ)到所指定的文件,即${dfs.name.dir}/current目錄下的fsimage文件,此外還會(huì)將另外一部分對(duì)NameNode更改的日志信息存儲(chǔ)到${dfs.name.dir}/current目錄下的edits文件中。fsimage文件和edits文件可以確定NameNode節(jié)點(diǎn)當(dāng)前的狀態(tài),這樣在NameNode節(jié)點(diǎn)由于突發(fā)原因崩潰時(shí),可以根據(jù)這兩個(gè)文件中的內(nèi)容恢復(fù)到節(jié)點(diǎn)崩潰前的狀態(tài),所以對(duì)NameNode節(jié)點(diǎn)中內(nèi)存元數(shù)據(jù)的每次修改都必須保存下來(lái)。但是如果每次都保存到fsimage文件中,這樣效率就特別低,所以引入編輯日志文件edits,保存對(duì)元數(shù)據(jù)的修改信息,也就是fsimage文件保存NameNode節(jié)點(diǎn)中某一時(shí)刻內(nèi)存中的元數(shù)據(jù)(即目錄樹(shù)),edits保存這一時(shí)刻之后的對(duì)元數(shù)據(jù)的更改信息。
一、內(nèi)存元數(shù)據(jù)
內(nèi)存中有一份完整的元數(shù)據(jù)(內(nèi)存meta data),包含文件路徑、副本數(shù)、blockid,及每一個(gè)block所在datanode的信息。
二、Fsimage鏡像文件
fsimage 文件其實(shí)是 Hadoop 文件系統(tǒng)元數(shù)據(jù)的一個(gè)永久性的檢查點(diǎn),其中包含 Hadoop 文件系統(tǒng)中的所有目錄和文件 idnode 的序列化信息;
使用命令將二進(jìn)制fsimage文件還原成XML文件hdfs fs -oiv -i fsimage“文件輸入路徑” -p XML -o “輸出路徑”
1.首先是一個(gè)image head,其中包含:
imgVersion(int):當(dāng)前image的版本信息
namespaceID(int):用來(lái)確保別的HDFS instance中的datanode不會(huì)誤連上當(dāng)前NN。
numFiles(long):整個(gè)文件系統(tǒng)中包含有多少文件和目錄
genStamp(long):生成該image時(shí)的時(shí)間戳信息。
2.接下來(lái)便是對(duì)每個(gè)文件或目錄的源數(shù)據(jù)信息,如果是目錄,則包含以下信息:
path(String):該目錄的路徑,如“/user/build/build-index”
replications(short):副本數(shù)(目錄雖然沒(méi)有副本,但這里記錄的目錄副本數(shù)也為3)
mtime(long):該目錄的修改時(shí)間的時(shí)間戳信息
atime(long):該目錄的訪問(wèn)時(shí)間的時(shí)間戳信息
blocksize(long):目錄的blocksize都為0
numBlocks(int):實(shí)際有多少個(gè)文件塊,目錄的該值都為-1,表示該item為目錄
nsQuota(long):namespace Quota值,若沒(méi)加Quota限制則為-1
dsQuota(long):disk Quota值,若沒(méi)加限制則也為-1
username(String):該目錄的所屬用戶(hù)名
group(String):該目錄的所屬組
permission(short):該目錄的permission信息,如644等,有一個(gè)short來(lái)記錄。
3.若從fsimage中讀到的是一個(gè)文件,則還會(huì)額外包含如下信息:
blockid(long):屬于該文件的block的blockid
numBytes(long):該block的大小
genStamp(long):該block的時(shí)間戳
三、edits日志文件
edits存放的是 Hadoop文件系統(tǒng)的所有更新操作的路徑,文件系統(tǒng)客戶(hù)端執(zhí)行的所有寫(xiě)操作首先會(huì)被記錄到 edits文件中。