亚洲全黄无码一级在线看_国产剧情久久久性色_无码av一区二区三区无码_亚洲成a×人片在线观看

當(dāng)前位置: 首頁 > 科技新聞 >

Hadoop 之 NameNode 元數(shù)據(jù)原理

時(shí)間:2019-11-12 21:03來源:網(wǎng)絡(luò)整理 瀏覽:
在對(duì)NameNode節(jié)點(diǎn)進(jìn)行格式化時(shí),調(diào)用了FSImage的saveFSImage()方法和FSEditLog.createEditLogF

在對(duì)NameNode節(jié)點(diǎn)進(jìn)行格式化時(shí),調(diào)用了FSImage的saveFSImage()方法和FSEditLog.createEditLogFile()存儲(chǔ)當(dāng)前的元數(shù)據(jù)。Namenode主要維護(hù)兩個(gè)文件,一個(gè)是fsimage,一個(gè)是editlog。

fsimage :保存了最新的元數(shù)據(jù)檢查點(diǎn),包含了整個(gè)HDFS文件系統(tǒng)的所有目錄和文件的信息。對(duì)于文件來說包括了數(shù)據(jù)塊描述信息、修改時(shí)間、訪問時(shí)間等;對(duì)于目錄來說包括修改時(shí)間、訪問權(quán)限控制信息(目錄所屬用戶,所在組)等。簡單的說,F(xiàn)simage就是在某一時(shí)刻,整個(gè)hdfs 的快照,就是這個(gè)時(shí)刻hdfs上所有的文件塊和目錄,分別的狀態(tài),位于哪些個(gè)datanode,各自的權(quán)限,各自的副本個(gè)數(shù)等。

注意:Block的位置信息不會(huì)保存到fsimage,Block保存在哪個(gè)DataNode(由DataNode啟動(dòng)時(shí)上報(bào))。

editlog :主要是在NameNode已經(jīng)啟動(dòng)情況下對(duì)HDFS進(jìn)行的各種更新操作進(jìn)行記錄,HDFS客戶端執(zhí)行所有的寫操作都會(huì)被記錄到editlog中。

讀取元數(shù)據(jù):

啟動(dòng)NameNode節(jié)點(diǎn)時(shí),又要從鏡像和編輯日志中讀取元數(shù)據(jù)。

寫入元數(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ù)的每次修改都必須保存下來。但是如果每次都保存到fsimage文件中,這樣效率就特別低效,所以引入編輯日志文件edits,保存對(duì)對(duì)元數(shù)據(jù)的修改信息,也就是fsimage文件保存NameNode節(jié)點(diǎn)中某一時(shí)刻內(nèi)存中的元數(shù)據(jù)(即目錄樹),edits保存這一時(shí)刻之后的對(duì)元數(shù)據(jù)的更改信息。

SecondaryNameNode:主要由兩個(gè)作用,一是鏡像備份(不是NN的備份,但可以做備份),二是日志與鏡像的定期合并。

  • 第一步:將hdfs更新記錄寫入一個(gè)新的文件——edits.new。
  • 第二步:將fsimage和editlog通過http協(xié)議發(fā)送至secondary namenode。
  • 第三步:將fsimage與editlog合并,生成一個(gè)新的文件——fsimage.ckpt。這步之所以要在secondary namenode中進(jìn)行,是因?yàn)楸容^耗時(shí),如果在namenode中進(jìn)行,或?qū)е抡麄€(gè)系統(tǒng)卡頓。
  • 第四步:將生成的fsimage.ckpt通過http協(xié)議發(fā)送至namenode。
  • 第五步:重命名fsimage.ckpt為fsimage,edits.new為edits。
  • 第六步:等待下一次checkpoint觸發(fā)SecondaryNameNode進(jìn)行工作,一直這樣循環(huán)操作。

注:checkpoint觸發(fā)的條件可以在core-site.xml文件中進(jìn)行配置。fs.checkpoint.period表示多長時(shí)間記錄一次hdfs的鏡像。默認(rèn)是1小時(shí)。fs.checkpoint.size表示一次記錄多大的size,默認(rèn)64M。例如如下:

  

流程圖:

Hadoop 之 NameNode 元數(shù)據(jù)原理

【責(zé)任編輯:未麗燕 TEL:(010)68476606】
推薦內(nèi)容