天天看點

【原創】單獨部署secondarynamenode

hadoop+hbase+zookeeper叢集環境已初步搭建完畢了。但是真正用于生産環境的叢集系統必須規範,是以secondarynamenode不可能和namenode部署在同一節點上,于是乎我将secondarynamenode部署在一台datanode上,當然我這條件不允許,最佳的環境就是secondarynamenode單獨部署在一台機器上,這樣更好!當日secondarynamenode節點可以部署多個。隻需要再masters檔案裡面多寫幾個節點即可!一行一個!

引用别人的一段話:

SecondaryNameNode有兩個作用,一是鏡像備份,二是日志與鏡像的定期合并。兩個過程同時進行,稱為checkpoint

總共分五步:

1.SecondaryNameNode通知NameNode準備送出edits檔案,此時主節點産生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過程到此結束。

環境介紹:

系統版本均屬于redhat 4.8

192.168.15.95   master

192.168.15.72   slave1

192.168.15.71   slave2

192.168.15.132  slave3

下面我将secondarynamenode部署在slave3節點上。

首先你的hadoop的masters檔案裡面寫的是部署secondarynamenode節點的主機名。改完後記得同步到所有節點上。(這個我前面的文章有介紹)

其次就是直接在你的secondarynamenode節點上做修改就可以了

1、修改core-site.xml檔案,增加如下内容:

          fs.checkpoint.period               預設檢查時間是1小時,這裡以秒結尾。

          3600

          fs.checkpoint.size                 預設檢查塊大小是64M。

          67108864

          fs.checkpoint.dir

          /data/work/hdfs/namesecondary           

最後的fs.checkpoint.dir這個值是根據你的dfs.name.dir值去參考,我的這個就是如下圖所示:

  dfs.name.dir

  /data/work/hdfs/name

2、修改hdfs-site.xml檔案,修改如下内容:

  dfs.http.address

  0.0.0.0:50070     

    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.

請将0.0.0.0修改為你要部署secondarynamenode節點的主機名,我這裡就是寫master

3、重新開機hadoop(步驟省略)

4、測試secondarynamenode部署是否正确?

可以檢查secondarynamenode的日志,或者直接檢視/data/work/hdfs/namesecondary目錄下是否有一些檔案呢?如果我沒記錯的話,這裡一般會是1小時之後才會出現完整的日志和映像。如下圖所示:

[hadoop@slave3 namesecondary]$ ll

總用量 12

drwxrwxr-x  2 hadoop hadoop 4096  7月 17 13:51 current

drwxrwxr-x  2 hadoop hadoop 4096  7月 11 19:36 image

-rw-rw-r--  1 hadoop hadoop    0  7月 16 17:28 in_use.lock

drwxrwxr-x  2 hadoop hadoop 4096  7月 17 13:46 previous.checkpoint

當然最主要的是有了這些檔案你就可以去恢複namenode節點了!當然資料肯定會有丢失,因為預設是1小時同步一次!不建議新手将檢查時間設定的很小,因為這樣會增大namenode的負載,平常我們不會拿secondarynamenode的日志去恢複,除非萬不得已的情況,因為我們有更好,更實時的備份方法。這裡以後再介紹!

繼續閱讀