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...