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框架
- oracle工作機制(1)Oracle
- oracle工作機制(2)Oracle
- ORACLE的工作機制Oracle
- oracle工作機制(轉)Oracle
- MapReduce之MapTask工作機制APT
- oracle工作機制導圖Oracle
- ORACLE的工作機制-1Oracle
- ORACLE的工作機制-2Oracle
- ORACLE的工作機制-3Oracle
- ORACLE的工作機制-4Oracle
- ORACLE的工作機制-5Oracle
- ORACLE的工作機制(簡)Oracle
- HDFS 09 - HDFS NameNode 的高可用機制
- HDFS成員的工作機制
- SAP 電商雲 Accelerator 和 Spartacus UI 的工作機制差異UI
- 從原始碼分析Hystrix工作機制原始碼
- 詳解Java Socket的工作機制Java
- java垃圾回收器的工作機制Java
- 【系統之音】WindowManager工作機制詳解
- 詳解 nginx php-fpm 工作機制NginxPHP
- Hadoop框架:DataNode工作機制詳解Hadoop框架
- JVM結構、GC工作機制詳解JVMGC
- 關於COUNT STOPKEY的工作機制TopK
- innodb master執行緒的工作機制AST執行緒
- ERROR namenode.NameNode: Failed to start namenode. java.lang.IllegalArgumentErrorAIJava
- 淺析Lua指令碼:MySQL Proxy工作機制指令碼MySql
- org.apache.hadoop.hdfs.server.namenode.NameNode.ApacheHadoopServer
- 深入理解 ngrx effect 背後的工作機制
- DataNode工作機制 & 新增節點 &下線節點
- 圖文詳解 HDFS 的工作機制及其原理
- 面試:Handler 的工作機制是怎樣的呢?面試
- Strace 驗證CKPT程式三秒工作機制
- mongoDB研究筆記:分片叢集的工作機制MongoDB筆記
- PHP自動載入__autoload的工作機制PHP
- 第十一篇:Map/Reduce 工作機制分析 - 錯誤處理機制
- 從零開始入門 K8s | GPU 管理和 Device Plugin 工作機制K8SGPUdevPlugin
- 深入理解PHP之:Nginx 與 FPM 的工作機制PHPNginx