NameNode && Secondary NameNode作業機制
1)作業流程

2) fsimage和edits
NameNode是HDFS的大腦,它維護著整個檔案系統的目錄樹,以及目錄樹里所有的檔案和目錄,這些資訊以倆種檔案存盤在檔案系統:一種是命名空間鏡像(也稱為檔案系統鏡像,File System Image,fsimage),即HDFS元資料的完整快照,每次NameNode啟動的時候,默認會加載最新的命名空間鏡像,另一種是命令空間鏡像的編輯日志(Edit log),
fsimage檔案其實是檔案系統元資料的一個永久性檢查點,但并非每一個寫操作都會更新這個檔案,因為FSImage是一個大型檔案,如果頻繁地執行寫操作,會使系統運行極為緩慢,解決方案是NameNode只將改動內容預寫日志,即寫入命名空間鏡像的編輯日志.隨著時間的推移,編輯日志會變得越來越大,那么一旦發生故障,將會話費非常多的時間來回滾操作,所以就像傳統的關系資料庫一樣,需要定期地合并fsimage和編輯日志,如果由NameNode來做合并操作,那么NameNode在為集群提供服務時可能無法提供足夠的資源,為了徹底解決這一問題,Secondary NameNode應允而生,
3)第一階段:NameNode 啟動
- (1)第一次啟動 NameNode 格式化后,創建 fsimage 和 edits 檔案,如果不是第一次啟動,直接加載編輯日志和鏡像檔案到記憶體,
- (2)客戶端對元資料進行增刪改的請求,
- (3)NameNode 記錄操作日志,更新滾動日志,
- (4)NameNode 在記憶體中對資料進行增刪改查,
4)第二階段:Secondary NameNode 作業
- (1)Secondary NameNode詢問NameNode是否需要checkpoint,
- (2)Secondary NameNode請求執行checkpoint,
- (3)NameNode滾動正在寫的edits日志,
- (4)將滾動前的編輯日志和鏡像檔案拷貝到Secondary NameNode,
- (5)Secondary NameNode加載編輯日志和鏡像檔案到記憶體,并合并,
- (6)生成新的鏡像檔案fsimage.chkpoint,
- (7)拷貝fsimage.chkpoint到NameNode,
- (8)NameNode將fsimage.chkpoint重新命名成fsimage,
默認情況下,該程序每小時發生一次,或者當NameNode的編輯日志檔案到達默認的64MB也會觸發,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/234749.html
標籤:其他
下一篇:Redis 復制程序詳解
