第五課 HDFS之namenode管理元數(shù)據(jù)機制及一些問題

一、NameNode啟動時如何維護元數(shù)據(jù):
1、概念介紹:
Edits文件:NameNode在本地操作hdfs系統(tǒng)的文件都會保存在Edits日志文件中。也就是說當文件系統(tǒng)中的任何元數(shù)據(jù)產(chǎn)生操作時,都會記錄在Edits日志文件中。eg:在HDFS上創(chuàng)建一個文件,NameNode就會在Edits中插入一條記錄。同樣如果修改或者刪除等操作,也會在Edits日志文件中新增一條數(shù)據(jù)。
FsImage映像文件:包括數(shù)據(jù)塊到文件的映射,文件的屬性等等,都存儲在一個稱為FsImage的文件中,這個文件也是放在NameNode所在的文件系統(tǒng)中。

2、流程介紹:
①、加載fsimage映像文件到內(nèi)存
②、加載edits文件到內(nèi)存
③、在內(nèi)存將fsimage映像文件和edits文件進行合并
④、將合并后的文件寫入到fsimage中
⑤、清空原先edits中的數(shù)據(jù),使用一個空的edits文件進行正常操作

3、流程圖分析:


image.png

4、疑問
因為NameNode只有在啟動的階段才合并fsimage和edits,那么如果運行時間長了,edits文件可能會越來越大,在下一次啟動NameNode時會花很長的時間,請問能否讓fsimage映像文件和edits日志文件定期合并呢?
答案肯定是可以的,為了解決這個問題我們就要用到Secondary NameNode了,Secondary NameNode主要的作用是什么呢?他是如何將fsimage和edits進行合并的呢?帶著疑問再次進行分析。

二、Secondary NameNode工作流程:

1、Secondary NameNode和NameNode的區(qū)別:

NameNode:
①、存儲文件的metadata,運行時所有數(shù)據(jù)都保存在內(nèi)存中,這個的HDFS可存儲的文件受限于NameNode的內(nèi)存。
②、NameNode失效則整個HDFS都失效了,所以要保證NameNode的可用性。
Secondary NameNode:
①、定時與NameNode進行同步,定期的將fsimage映像文件和Edits日志文件進行合并,并將合并后的傳入給NameNode,替換其鏡像,并清空編輯日志。如果NameNode失效,需要手動的將其設置成主機。
②、Secondary NameNode保存最新檢查點的目錄和NameNode的目錄結構相同。所以NameNode可以在需要的時候應用Secondary NameNode上的檢查點鏡像。

2、什么時候checkpoint
①、連續(xù)兩次的檢查點最大時間間隔,默認是3600秒,可以通過配置“fs.checkpoint.period”進行修改
②、Edits日志文件的最大值,如果超過這個值就會進行合并即使不到1小時也會進行合并??梢酝ㄟ^“fs.checkpoint.size”來配置,默認是64M;

3、Secondary NameNode的工作流程
①、NameNode通知Secondary NameNode進行checkpoint。
②、Secondary NameNode通知NameNode切換edits日志文件,使用一個空的。
③、Secondary NameNode通過Http獲取NmaeNode上的fsimage映像文件(只在第一次的時候)和切換前的edits日志文件。
④、Secondary NameNode在內(nèi)容中合并fsimage和Edits文件。
⑤、Secondary NameNode將合并之后的fsimage文件發(fā)送給NameNode。
⑥、NameNode用Secondary NameNode 傳來的fsImage文件替換原先的fsImage文件。
4、流程圖分析:

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

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

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