HDFS中NameNode和Secondary NameNode工作機制


NameNode工作機制

0)啟動概述

Namenode啟動時,首先將映像文件(fsimage)載入內存,並執行編輯日志(edits)中的各項操作。一旦在內存中成功建立文件系統元數據的映像,則創建一個新的fsimage文件和一個空的編輯日志。此時,namenode開始監聽datanode請求。但是此刻,namenode運行在安全模式,即namenode的文件系統對於客戶端來說是只讀的。

系統中的數據塊的位置並不是由namenode維護的,而是以塊列表的形式存儲在datanode中。在系統的正常操作期間,namenode會在內存中保留所有塊位置的映射信息。在安全模式下,各個datanode會向namenode發送最新的塊列表信息,namenode了解到足夠多的塊位置信息之后,即可高效運行文件系統。

如果滿足“最小副本條件”,namenode會在30秒鍾之后就退出安全模式。所謂的最小副本條件指的是在整個文件系統中99.9%的塊滿足最小副本級別(默認值:dfs.replication.min=1)。在啟動一個剛剛格式化的HDFS集群時,因為系統中還沒有任何塊,所以namenode不會進入安全模式。

1)第一階段:namenode啟動根據客戶端的請求記錄fsimage和edits,在內存中進行增刪改查

(1)第一次啟動namenode格式化后,創建HDFS鏡像文件fsimage和編輯日志文件edits。如果不是第一次啟動,直接加載編輯日志和鏡像文件到內存。

(HDFS的鏡像文件FsImage包含着集群所有文件的元數據信息;編輯日志edits類似“賬本”記錄數據操作)

(2)客戶端對元數據進行增刪改的請求

(3)namenode記錄操作日志,更新滾動日志(“記賬”)到edits.002、edits.inprogress為接下來用的edits

(4)namenode在內存中對數據進行增刪改查

2)第二階段:Secondary NameNode工作幫助NameNode具體操作edits和fsimage文件,NameNode只是在內存中執行增刪改查

       (1)Secondary NameNode詢問namenode是否需要checkpoint。直接帶回namenode是否檢查結果。

  (checkpoint判斷條件:① 定時時間到,默認1小時 ② edits中造作動作次數已滿,默認100萬

       (2)Secondary NameNode請求執行checkpoint。

       (3)namenode滾動正在寫的edits日志(將目前的edits.inprogress寫入edits.003)

       (4)將滾動前的編輯日志(edits.002、edits.003)和鏡像文件拷貝到Secondary NameNode

       (5)Secondary NameNode將編輯日志和鏡像文件加載到內存並合並。

       (6)生成新的鏡像文件fsimage.chkpoint

       (7)拷貝fsimage.chkpoint到namenode

       (8)namenode將fsimage.chkpoint重新命名成fsimage

3)web端訪問SecondaryNameNode

       (1)啟動集群

       (2)瀏覽器中輸入:http://hadoop102:50090/status.html

       (3)查看SecondaryNameNode信息

 

4)chkpoint檢查時間參數設置

(1)通常情況下,SecondaryNameNode每隔一小時執行一次。

[hdfs-default.xml]

<property>
  <name>dfs.namenode.checkpoint.period</name>
  <value>3600</value>
</property>

(2)一分鍾檢查一次操作次數,當操作次數達到1百萬時,SecondaryNameNode執行一次。

<property>
  <name>dfs.namenode.checkpoint.txns</name>
  <value>1000000</value>
<description>操作動作次數</description>
</property>

<property>
  <name>dfs.namenode.checkpoint.check.period</name>
  <value>60</value>
<description> 1分鍾檢查一次操作次數</description>
</property>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM