SNN用途與配置

來源:互聯網
上載者:User

標籤:des   style   http   color   strong   檔案   

一、SecondaryNameNode用途

  SNN是用來儲存namenode中對HDFS metadata的資訊的備份,並減少namenode重啟的時間,SNN進程預設運行在 namenode 機器上,如果這台機器出錯,宕機,對恢複HDFS檔案系統是很大的災難,因此最佳方式是將SNN進程配置在另外一台機器上運行。

  在hadoop中,namenode負責對HDFS的metadata的持久化儲存,並且處理來自用戶端的對HDFS的各種操作的互動反饋。為了保證互動速度,HDFS檔案系統的metadata是被load到namenode機器的記憶體中的,並且會將記憶體中的這些資料儲存到磁碟進行持久化儲存。為了保證這個持久化過程不會成為HDFS操作的瓶頸。

  hadoop採取的策略是:把HDFS最近一段時間的操作list儲存到namenode中的一個叫Editlog的檔案中去。當重啟namenode時,除了load fslmage意外,還會對這個Editlog檔案中記錄的HDFS操作進行replay,以恢複HDFS重啟之前的最終狀態。 而SecondaryNameNode,會周期性地將Editlog中記錄的對HDFS的操作合并到一個checkpoint中,然後清空 Editlog。所以namenode的重啟就會Load最新的一個checkpoint,並replay Editlog中記錄的hdfs操作,由於Editlog中記錄的是從上一次checkpoint以後到現在的巨集指令清單,所以就會比較小。如果沒有snn 的這個周期性的合并過程,那麼當每次重啟namenode的時候,就會花費很長的時間。而這樣周期性的合并就能減少重啟的時間。同時也能保證HDFS系統的完整性。這就是SecondaryNameNode所做的事情。所以SNN並不能分擔namenode上對HDFS互動性操作的壓力。儘管如此,當namenode機器宕機或者namenode進程出問題時,namenode的daemon進程,可以通過人工的方式從snn上拷貝一份metadata 來恢複HDFS檔案系統.

  SNN工作原理:

  1、SecondaryNameNode通知NameNode準備提交edits檔案,此時namenode節點產生edits.new

  2、SecondaryNameNode通過http get方式擷取NameNode的fsimage與edits檔案(在SecondaryNameNode的current同級目錄下可見到 temp.check-point或者previous-checkpoint目錄,這些目錄中儲存著從namenode拷貝來的鏡像檔案)。

  3、SecondaryNameNode開始合并擷取的上述兩個檔案,產生一個新的fsimage檔案fsimage.ckpt
     4、SecondaryNameNode用http post方式發送fsimage.ckpt至NameNode
     5、NameNode將fsimage.ckpt與edits.new檔案分別重新命名為fsimage與edits,然後更新fstime,整個checkpoint過程到此結束。在新版本的hadoop中,SecondaryNameNode兩個作用被兩個節點替換,checkpoint node與backup node.

  

  SecondaryNameNode備份由三個參數控制fs.checkpoint.period控制周期,fs.checkpoint.size控制記錄檔超過多少大小時合并, dfs.http.address表示http地址,這個參數在SecondaryNameNode為單獨節點時需要設定。

 

二、配置SNN

  HDFS的一次運行執行個體是通過在namenode機器上的$HADOOP_HOME/bin/start-dfs.sh(或者start-all.sh) 指令碼來啟動的。並在運行該指令碼的機器上啟動namenode進程,而slaves機器都會啟動DataNode進程,slave機器的列表儲存 在conf/slaves檔案中,一行一台機器。並且會在另外一台機器上啟動一個snn進程,這台機器由conf/masters檔案指定。

  所以,conf/masters檔案中指定的機器是SNN進程啟動並執行機器,而不是jobtracker或者namenode進程要運行機器,因為這些進程是運行在launch bin/start-dfs.sh或者bin/start-mapred.sh(start-all.sh)的機器上的。

  通過以下步驟配置SNN運行在另一台或多台機器上:

  1、將所有想要運行secondarynamenode進程的機器寫到masters檔案中,一行一台。

  2、修改在masters檔案中配置了的機器上的conf/hdfs-site.xml檔案,加上如下內容:

  <property>

    <name>dfs.secondary.http.address</name>

    <value>192.168.1.152:50090</value>##如果secondarynamenode為多個話可以設定為0.0.0.0:50090

  </property> 

  <property> 

    <name>dfs.http.address</name>

    <value>192.168.1.151:50070</value>

  </property>

  core-site.xml:這裡有2個參數可配置,但一般來說我們不做修改。fs.checkpoint.period表示多長時間記錄一次hdfs的鏡像。預設是1小時。fs.checkpoint.size表示一次記錄多大的size,預設64M。

  <property>

    <name>fs.checkpoint.period</name>

    <value>3600</value>

    <description>The number of seconds between two periodic checkpoints.</description>

  </property>

  <property>

    <name>fs.checkpoint.size</name>

    <value>67108864</value>

    <description>The size of the current edit log (in bytes) that triggers a periodic checkpoint even if the fs.checkpoint.period hasn‘t expired. </description>

  </property>

  <property>

    <name>fs.checkpoint.dir</name>

    <value>/app/user/hdfs/namesecondary</value>

    <description>Determines where on the local filesystem the DFS secondary namenode should store the temporary images to merge.If this is a comma-delimited list of directories then the image is replicated in all of the directories for redundancy.</description>

  </property>

  3、配置檢查。配置完成之後,我們需要檢查一次是否成功。我們可以通過查看運行secondarynamenode的機器上檔案目錄來確定是否成功配置。

  系統復原

  1、配置完成後,如何恢複?首先我們kill掉namenode進程,然後將hadoop.tmp.dir目錄下的資料刪除掉。製造master掛掉情況。

     2、在配置參數dfs.name.dir指定的位置建立一個空檔案夾;把檢查點目錄的位置賦值給配置參數fs.checkpoint.dir;啟動namenode,並加上-importCheckpoint。

     3、啟動namenode的時候採用hadoop namenode -importCheckpoint.

 

  Secondarynamenode的啟動和停止

  啟動:

    bin/hadoop-daemons.sh --config conf/ --hosts masters start secondarynamenode

  停止:

    bin/hadoop-daemons.sh --config conf/ --hosts masters stop secondarynamenode

  總結

     1、secondarynamenode可以配置多個,修改conf/masters檔案。

     2、如果要恢複資料是需要手動拷貝到namenode機器上的。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.