国产精品色哟哟_男男激情3p互攻_色偷偷影院_和女同学厕所做了四次

當前位置: 首頁 / 技術(shù)干貨 / 正文
HDFS的SecondaryNamenode

2022-11-11

文件 namenode fsimage secondarynamenode

  在HDFS相關(guān)的守護進程中,有NameNode進程、DataNode進程、SecondaryNameNode進程等。NameNode和DataNode職責比較明確,我們都知道是做什么的,那么SecondaryNameNode的作用是什么呢?為什么SecondayNameNode要和NameNode部署在不同的節(jié)點上呢?有人說SecondaryNameNode是NameNode的備份,這種說法正確嗎?我們來理解一下SecondaryNameNode是什么,主要是做什么工作的。

  在正式的介紹SecondaryNameNode之前,我們先來認識兩種文件: fsimage 和 eidts。我們都知道NameNode有一個作用就是維護HDFS分布式文件系統(tǒng)的目錄樹結(jié)構(gòu)。在HDFS上有什么目錄、每一個目錄下又有什么文件等等,這些信息是需要維護的。

  NameNode在內(nèi)存中維護文件系統(tǒng)的目錄樹結(jié)構(gòu),而這樣的目錄樹結(jié)構(gòu)隨著HDFS的重啟不會丟失,也就說明NameNode會將其序列化到本地磁盤上,以文件的形式保存下來。這個文件就是fsimage文件。我們可以在NameNode所在的節(jié)點發(fā)現(xiàn)這個文件。

0

  那么,是不是我們每次對HDFS進行操作的時候,NameNode都會將內(nèi)存中記錄的HDFS的目錄樹結(jié)構(gòu)序列化下來呢?顯然不應(yīng)該是這樣的,因為如果你的文件系統(tǒng)中的文件比較多、比較復(fù)雜,在內(nèi)存中維護的數(shù)據(jù)量也會比較龐大,我們假設(shè)1G。那么如果每當對目錄樹結(jié)構(gòu)產(chǎn)生了修改之后,都需要將內(nèi)存中的數(shù)據(jù)序列化到磁盤上的話,就產(chǎn)生大量的磁盤IO。而且在序列化期間,如果NameNode宕機的話,會出現(xiàn)數(shù)據(jù)丟失的情況。

  因此,NameNode并不會實時的將每一次的變更都序列化到本地磁盤上。而是會周期性的進行序列化,一般來說一個小時序列化一次,生成fsimage文件。那么在這一個小時的時間之內(nèi),如果產(chǎn)生了新的文件結(jié)構(gòu)變更怎么辦?這個時候,NameNode會將新的操作以edit log的形式保存在文件中,edit log中并不會保存全部的目錄結(jié)構(gòu),而只是記錄了某一次的變更操作。

1

  在NameNode啟動的時候,首先加載本地磁盤上的fsimage文件,將一個完整的目錄結(jié)構(gòu)讀取到內(nèi)存中。然后再依次讀取每一個edit log中的記錄,在內(nèi)存中進行推薦,對目錄樹結(jié)構(gòu)進行推演。這樣就可以得到上次關(guān)機的時候完整的目錄樹結(jié)構(gòu)。

2

  那么,SecondaryNameNode是干什么的呢?上面提到了,NameNode會周期性的對內(nèi)存中的目錄結(jié)構(gòu)進行序列化,生成fsimage文件。其實這個工作是由SecondaryNameNode來完成的。SecondaryNameNode會輔助NameNode進行fsimage和edit log的合并工作,減小editlog的大小,從而能夠縮減下一次啟動NameNode的時間。兩個文件的合并周期,稱之為檢查點機制(checkpoint),是可以通過hdfs-default.xml配置文件進行修改的:

<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
<description>兩次檢查點間隔的秒數(shù),默認是1個小時</description>
</property>
<property>
<name>dfs.namenode.checkpoint.txns</name>
<value>1000000</value>
<description>txid執(zhí)行的次數(shù)達到100w次,也執(zhí)行checkpoint</description>
</property>
<property>
<name>dfs.namenode.checkpoint.check.period</name>
<value>60</value>
<description>60秒一檢查txid的執(zhí)行次數(shù)</description>
</property>

3

  1. SecondaryNamenode請求Namenode停止使用正在編輯的editlog文件,Namenode會創(chuàng)建新的editlog文件,同時更新seed_txid文件。

  2. SecondaryNamenode通過HTTP協(xié)議獲取Namenode上的fsimage和editlog文件。

  3. SecondaryNamenode將fsimage讀進內(nèi)存當中,并逐步分析editlog文件里的數(shù)據(jù),進行合并操作,然后寫入新文件fsimage_x.ckpt文件中。

  4. SecondaryNamenode將新文件fsimage_x.ckpt通過HTTP協(xié)議發(fā)送回Namenode。

  5. Namenode再進行更名操作。

好程序員公眾號

  • · 剖析行業(yè)發(fā)展趨勢
  • · 匯聚企業(yè)項目源碼

好程序員開班動態(tài)

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數(shù)據(jù)+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發(fā) <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數(shù)據(jù)分析 <高端班>

    開班時間:2021-07-12(北京)

    預(yù)約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發(fā) <高端班>

    開班時間:2021-07-12(北京)

    預(yù)約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號-5 京公網(wǎng)安備 11010802035720號