NameNode啟動中image檔案處理流程

2021-05-25 04:49:50 字數 898 閱讀 9094

namenode時與image檔案相關的大概有下面三步操作:

第一步  載入image

namenode啟動後時首先載入硬碟上的fsimage檔案(保持了整個命名空間)和edits檔案(保持了命名空間的操作日誌),在記憶體中merge後將新的fsimage寫到磁碟上,即做一次checkpoint。

其中載入過程如圖1所示:

圖1 載入image檔案流程

通常namenode配置兩個目錄來存放fsimage&edits檔案,分布是本地磁碟和nfs,防止namenode所在機器磁碟壞掉後資料丟失。

每個目錄下都保持了乙個fstime檔案,裡面記錄了最近一次checkpoint時間。namenode啟動時根據checkpoint時間載入最新的乙份資料。

edits.new是個臨時檔案,只有secondarynamenode正在做checkpoint的時候存在。

第二步 儲存image

namenode載入完fsimage&edits檔案後,會將merge後的結果寫到磁碟上。寫的過程會對本地磁碟和nfs

依次做圖2所示的操作。

圖2 儲存image檔案流程

這一步做完後,磁碟上有乙份原始的fsimage檔案,乙份最新checkpoint檔案:fsimage.ckpt,另外edits&edits.new為空檔案(4個位元組)。

第三步 滾動image檔案

寫完checkpoint後,namenode會對磁碟上的檔案做一次滾動(重新命名),如圖3所示:

圖3 滾動image檔案流程

該步驟將fsimage.ckpt重新命名為fsimage(覆蓋原有fsimage檔案),edits.new重新命名為edits(覆蓋原有edits檔案),並將最新時間戳寫入fstime檔案。

hadoop中namenode啟動失敗

jps發現namenode啟動失敗 每次開機都要重新格式化一下namenode才可以 其實問題出現自tmp檔案上,因為每次開機就會被清空,所以現在我們配置乙個tmp檔案目錄。如果之前沒有配置過,預設是在 tmp 根目錄下的tmp檔案下,我的tmp沒啥重要檔案所以在配置之前,把裡面的檔案清空了 首先建...

NameNode啟動過程

nn的啟動過程 首先執行nn中的main函式 main函式的主要工作是建立乙個nn物件,並通過join方法等待其他執行緒執行結束。createnamenode函式 首先獲取startopt,就是啟動dfs時指定的引數 如 format 啟動時會對format hadoop一開始部署完成要進行一次格式...

NameNode啟動不了問題

報錯 encountered exception loading fsimage 原因分析 因為namenode首次啟動需要合併fsimage和edit,如果是首次啟動報這個錯 則沒有format。若曾經正常啟動過,本次啟動報這個錯,則需要配置hadoop.tmp.dir 記得初始化namenode...