hadoop - NameNode和SecondaryNameNode工作機(jī)制講解

1. 流程圖如下:

2. FSImage和Edits

nodenode是HDFS的大腦,它維護(hù)著整個文件系統(tǒng)的目錄樹,以及目錄樹里所有的文件和目錄,這些信息以倆種文件存儲在文件系統(tǒng):一種是命名空間鏡像(也稱為文件系統(tǒng)鏡像,F(xiàn)ile System Image,F(xiàn)SImage),即HDFS元數(shù)據(jù)的完整快照,每次NameNode啟動的時候,默認(rèn)會加載最新的命名空間鏡像,另一種是命令空間鏡像的編輯日志(Edit log)。

FSImage文件其實是文件系統(tǒng)元數(shù)據(jù)的一個永久性檢查點,但并非每一個寫操作都會更新這個文件,因為FSImage是一個大型文件,如果頻繁地執(zhí)行寫操作,會使系統(tǒng)運(yùn)行極為緩慢。解決方案是NameNode只將改動內(nèi)容預(yù)寫日志,即寫入命名空間鏡像的編輯日志。隨著時間的推移,編輯日志會變得越來越大,那么一旦發(fā)生故障,將會話費(fèi)非常多的時間來回滾操作,所以就像傳統(tǒng)的關(guān)系數(shù)據(jù)庫一樣,需要定期地合并FSImage和編輯日志。如果由NameNode來做合并操作,那么NameNode在為集群提供服務(wù)時可能無法提供足夠的資源,為了徹底解決這一問題,SecondaryNameNode應(yīng)允而生。

3. 第一階段:namenode 啟動

(1)第一次啟動 namenode 格式化后,創(chuàng)建 fsimage 和 edits 文件。如果不是第一次啟動,直接加載編輯日志和鏡像文件到內(nèi)存。
(2)客戶端對元數(shù)據(jù)進(jìn)行增刪改的請求。
(3)namenode 記錄操作日志,更新滾動日志。
(4)namenode 在內(nèi)存中對數(shù)據(jù)進(jìn)行增刪改查。

4. 第二階段:SecondaryNameNode 工作

(1)SecondaryNameNode 詢問 namenode 是否需要 checkpoint。直接帶回 namenode 是否檢查結(jié)果。
(2)Secondary NameNode 請求執(zhí)行 checkpoint。
(3)Secondary NameNode引導(dǎo)namenode 滾動更新編輯正在寫的 edits 日志。
(4) Secondary NameNode載入FSImage文件,回放編輯日志,將其合并到FSImage,將新的FSImage文件壓縮后寫入磁盤。
(5)拷貝 fsimage到 namenode。
(6)namenode 將 fsimage重新命名成 fsimage。

默認(rèn)情況下,該過程每小時發(fā)生一次,或者當(dāng)NameNode的編輯日志文件到達(dá)默認(rèn)的64MB也會觸發(fā)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容