NameNode和SecondaryNameNode工作機制
1.NameNode啟動
(1)首次啟動需要格式化NameNode,建立Fsimage和Edits檔案。如果不是第一次啟動,直接載入編輯日誌和映象檔案到記憶體。
(2)客戶端對後設資料進行增刪改的請求。
(3)NameNode記錄操作日誌,更新滾動日誌。
(4)NameNode在記憶體中對後設資料進行增刪改。
2.SecondaryNameNode工作
(1)SecondaryNameNode詢問NameNode是否需要CheckPoint。直接帶回NameNode是否檢查結果。
(2)SecondaryNameNode請求執行CheckPoint。
(3)NameNode滾動正在寫的Edits日誌。
(4)將滾動前的編輯日誌和映象檔案複製到SecondaryNameNode。
(5)Secondary NameNode載入編輯日誌和映象檔案到記憶體,併合並。
(6)生成新的映象檔案fsimage.chkpoint。
(7)複製fsimage.chkpoint到NameNode。
(8)NameNode將fsimage.chkpoint重新命名成fsimage。
名詞解釋:
Fsimage:NameNode記憶體中後設資料序列化後形成的檔案。
Edits:記錄客戶端更新後設資料資訊的每一步操作(可透過Edits運算出後設資料)。
3.詳細工作機制
NameNode啟動時,先滾動Edits並生成一個空的edits.inprogress,然後載入Edits和Fsimage到記憶體中,此時NameNode記憶體就持有最新的後設資料資訊。Client開始對NameNode傳送後設資料的增刪改的請求,這些請求的操作首先會被記錄到edits.inprogress中(查詢後設資料的操作不會被記錄在Edits中,因為查詢操作不會更改後設資料資訊),如果此時NameNode掛掉,重啟後會從Edits中讀取後設資料的資訊。然後,NameNode會在記憶體中執行後設資料的增刪改的操作。
由於Edits中記錄的操作會越來越多,Edits檔案會越來越大,導致NameNode在啟動載入Edits時會很慢,所以需要對Edits和Fsimage進行合併(所謂合併,就是將Edits和Fsimage載入到記憶體中,照著Edits中的操作一步步執行,最終形成新的Fsimage)。SecondaryNameNode的作用就是幫助NameNode進行Edits和Fsimage的合併工作。
SecondaryNameNode首先會詢問NameNode是否需要CheckPoint(觸發CheckPoint需要滿足兩個條件中的任意一個,定時時間到和Edits中資料寫滿了)。直接帶回NameNode是否檢查結果。SecondaryNameNode執行CheckPoint操作,首先會讓NameNode滾動Edits並生成一個空的edits.inprogress,滾動Edits的目的是給Edits打個標記,以後所有新的操作都寫入edits.inprogress,其他未合併的Edits和Fsimage會複製到SecondaryNameNode的本地,然後將複製的Edits和Fsimage載入到記憶體中進行合併,生成fsimage.chkpoint,然後將fsimage.chkpoint複製給NameNode,重新命名為Fsimage後替換掉原來的Fsimage。NameNode在啟動時就只需要載入之前未合併的Edits和Fsimage即可,因為合併過的Edits中的後設資料資訊已經被記錄在Fsimage中。
本文來源於:奈學開發者社群 ,如有侵權請聯絡我刪除
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69976011/viewspace-2707595/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hadoop框架:NameNode工作機制詳解Hadoop框架
- HDFS 09 - HDFS NameNode 的高可用機制
- springMVC 的工作原理和機制SpringMVC
- 容器的工作原理和隔離機制
- MapReduce之MapTask工作機制APT
- HDFS成員的工作機制
- Https工作原理&TLS握手機制HTTPTLS
- JavaScript 是如何工作的:WebRTC和對等網路的機制!JavaScriptWeb
- SAP 電商雲 Accelerator 和 Spartacus UI 的工作機制差異UI
- 詳解Java Socket的工作機制Java
- Hadoop框架:DataNode工作機制詳解Hadoop框架
- volatile 關鍵字的工作機制
- 從原始碼分析Hystrix工作機制原始碼
- 詳解 nginx php-fpm 工作機制NginxPHP
- 【系統之音】WindowManager工作機制詳解
- 理解Linux 中sed命令的工作機制Linux
- Session和Cookie機制SessionCookie
- UAV MOF工作原理之Agent注入機制原理
- Hadoop商業環境實戰-HDFS NameNode 當機後設資料一致保障及SNN機制深入研究Hadoop
- springcloud eureka原理和機制SpringGCCloud
- DataNode工作機制 & 新增節點 &下線節點
- Android彈窗元件工作機制之Dialog、DialogFragment(一)Android元件Fragment
- 圖文詳解 HDFS 的工作機制及其原理
- JavaScript是如何工作的: Web推送通知的機制JavaScriptWeb
- 深入理解 ngrx effect 背後的工作機制
- 從零開始入門 K8s | GPU 管理和 Device Plugin 工作機制K8SGPUdevPlugin
- 區塊鏈共識機制技術一--POW(工作量證明)共識機制區塊鏈
- kafka和raft共識機制KafkaRaft
- Hadoop錯誤之namenode當機的資料恢復Hadoop資料恢復
- JVM探究(一)談談雙親委派機制和沙箱安全機制JVM
- [譯] JavaScript 是如何工作的:Web 推送通知的機制JavaScriptWeb
- 面試:Handler 的工作機制是怎樣的呢?面試
- Java安全基礎之Java反射機制和ClassLoader類載入機制Java反射
- 通俗理解自注意力機制和多頭注意力機制
- Java動態代理和反射機制Java反射
- Linux的管道機制和重定向Linux
- 動態 SQL 和快取機制SQL快取
- Roguelike機制的原理和應用