天天看點

【學習筆記】Hadoop之HDFS架構、SecondaryNameNode、副本放置政策1. HDFS架構2. SecondaryNameNode(簡稱SNN)3. 副本放置政策

1. HDFS架構

HDFS是主從架構,一個NameNode作為主節點,維護管理檔案系統的中繼資料資訊,N個DataNode作為從節點,存儲實際的資料塊。

【圖檔後續補】

1.1 NameNode(簡稱NN)

維護管理檔案系統的中繼資料資訊

  • 檔案目錄結構
  • 檔案名稱
  • 檔案屬性(權限,建立時間,副本數…)
  • 檔案對應的塊(副本)與DataNode的映射關系

    這個映射關系,不會持久化存儲,而是在叢集啟動和運作時,由DataNode定期發送BlockReport給NameNode,NameNode在記憶體中動态維護該映射關系

1.2 DataNode(簡稱DN)

DataNode可以分布在不同的機架(RACK)上,主要功能存儲實際的資料塊,提供資料塊的讀寫功能。

另外DataNode還會定時的跟NameNode通信

  • 每隔3S(參數是dfs.heartbeat.interval)向NameNode發送一次心跳信号
  • 每隔21600000MS(既6H,參數是dfs.blockreport.intervalMsec)向NameNode發送一次塊報告

2. SecondaryNameNode(簡稱SNN)

SecondaryNameNode是NameNode的一個輔助程序,會定期的合并NameNode的fsimage檔案和edits日志為新的fsimage檔案并推送給NameNode,簡稱為檢查點(checkpoint)

chekpoint預設參數

  • dfs.namenode.checkpoint.period=3600 機關是S
  • dfs.namenode.checkpoint.txns=1000000

2.1 SecondaryNameNode工作流程

【圖檔後續補】

  1. NameNode啟動時加載最新的fsimage_n和edits_n+1-n+a,并生成新的日志edits_inprogress_n+a+1
  2. SecondaryNameNode把fsimage_n和edits_n+1-n+a複制到SecondaryNameNode節點,把這兩個檔案合并為fsimage_n+a
  3. SecondaryNameNode把新的鏡像檔案fsimage_n+a推送至NameNode
  4. NameNode節點的edits_inprogress_n+a+1寫滿,名稱變更為edits_n+a+1-n+b
  5. NameNode生成新的日志edits_inprogress_n+b+1
  6. SecondaryNameNode定期去NameNode複制最新的fsimage檔案和edits日志,并合并為新的fsimage鏡像檔案

3. 副本放置政策

【圖檔後續補】

第一個副本

  • 送出節點為DataNode,那麼第一個副本直接寫到該節點的HDFS目錄
  • 叢集外送出,則随機選一個網絡和CPU較為空閑的節點

第二個副本

  • 放置于與第一個副本不同機架的節點上

第三個副本

  • 放置于與第二個副本同一機架的不同節點上

繼續閱讀