SecondaryNamenode應用摘記

一、環境

Hadoop 0.19.2、JDK 1.6、Linux操作系統

二、背景

上週五的時候,由於操作系統的原因,導致JDK出現莫名的段錯誤。無論是重啓機器還是JDK重裝都無濟於事。更可悲的是,出問題的機器就是Master。當時心裏就涼了半截,因爲secondarynamenode配置也是在這個機器上(默認的,沒改過)。不過萬幸的是這個集羣是測試環境,所以問題不大。借這個緣由,我將secondarynamenode重新配置到其他機器上,並做namenode掛掉並恢復的測試。

三、操作

1、關於secondarynamenode網上有寫不錯的文章做說明,這裏我只是想說關鍵一點,它不是namenode的備份進程,說白了,namenode掛了,如果secondarynamenode沒掛,很不幸,集羣一樣無法正常工作。這裏有個文檔翻譯的很好,我鏈接一下:http://blog.csdn.net/AE86_FC/archive/2010/02/03/5284181.aspx

2、secondarynamenode一般來說不應該和namenode在一起,所以,我把它配置到了datanode上。配置到datanode上,一般來說需要改以下配置文件。conf/master、conf/hdfs-site.xml和conf/core-site.xml這3個配置文件,修改部分如下:

master:一般的安裝手冊都是說寫上namenode機器的IP或是名稱。這裏要說明一下,這個master不決定哪個是namenode,而決定的是secondarynamenode(決定誰是namenode的關鍵配置是core-site.xml中的fs.default.name這個參數)。所以,這裏直接寫上你的datanode的IP或機器名稱就可以了。一行一個。

hdfs-site.xml:這個配置文件要改1個參數:

0.0.0.0改爲你的namenode的IP地址。

<property> 
  <name>dfs.http.address</name> 
  <value>0.0.0.0:50070</value> 
  <description> 
    The address and the base port where the dfs namenode web ui will listen on. 
    If the port is 0 then the server will start on a free port. 
  </description> 
</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>

3、配置檢查。配置完成之後,我們需要檢查一下是否成功。我們可以通過查看運行secondarynamenode的機器上文件目錄來確定是否成功配置。首先輸入jps查看是否存在secondarynamenode進程。如果存在,在查看對應的目錄下是否有備份記錄。如下圖:

截圖1

該目錄一般存在於hadoop.tmp.dir/dfs/namesecondary/下面。

四、恢復

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

2、將secondarynamenode節點上hadoop.tmp.dir/dfs/namesecondary目錄整體拷貝到namenode節點上的hadoop目錄下,例如hadoop安裝在/home/hadoop目錄,則拷貝後爲/home/hadoop/namesecondary/

3、刪除dfs.name.dir目錄下的所有內容

4、修改hadoop-site.xml配置文件,將拷貝後的namesecondary目錄複製給配置參數fs.checkpoint.dir 

5、啓動namenode的時候採用hadoop namenode –importCheckpoint

    /home/hadoop/bin/hadoop namenode -importCheckpoint

    此時系統會從/home/hadoop/namesecondary目錄下加載edites

(黑體字部分是在轉貼原文的基礎上,根據實際經驗作了修改的部分 20110630 needle2)

五、總結

1、secondarynamenode可以配置多個,master文件裏面多寫幾個就可以。

2、千萬記得如果要恢復數據是需要手動拷貝到namenode機器上的。不是自動的(參看上面寫的恢復操作)。

3、鏡像備份的週期時間是可以修改的,如果不想一個小時備份一次,可以改的時間短點。core-site.xml中的fs.checkpoint.period值。

發佈了16 篇原創文章 · 獲贊 12 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章