之前安裝Hadoop時發現如果有太多的cluster,
就要將Hadoop複製一份放到這些node上面
一開始兩三台還好,那如果改成兩三百台就會死很慘
因此就開始試著想要把Hadoop放在NFS上面(Network File System)
如此一來我只需要建構一份Hadoop System
而其他的Node只要透過NFS 掛載Hadoop Server就好了!

 

我的方法是:擁有Hadoop0~Hadoop4五台機器
Hadoop0 是前端的server,Hadoop安裝在/usr/local/hadoop底下
安裝NFS Server請參考 這邊

 

NFS Server安裝完成後,就可以把Hadoop Mount到slave的node底下了
For Hadoop1~4

$> sudo mount hadoop0:/usr/local/haddop /usr/local/hadoop
//因為路徑要設一樣,所以我們把NFS mount的資料夾一樣放在/usr/local底下

(這邊避免還要ssh到另外四台的麻煩,可以使用pdsh指令,詳細請參考 這邊
  $> sudo pdsh -R ssh -w hadoop[1-4] mount hadoop0:/usr/local/hadoop /usr/local/hadoop

注意:若要使用pdsh,要先安裝pdsh

注意:若要使用mount指令,請先檢查hadoop0的/etc/exports有沒有設定以及hadoop1~4有沒有要mount的資料夾

  $> pdsh -R ssh -w hadoop[1-4] mkdir /usr/local/hadoop

 

接著還要記得設定NIS Server (Network Information Service)
NIS Sever的意思是讓所有的node擁有一樣的帳號密碼
詳細設定請參考 這邊

 

設定完成後確保hadoop0可以以root的身份ssh到各個node
接著就可以啟動Hadoop了!

 

-----------事情要是這麼簡單就好了-------------

 

然後就會發現Hadoop會無法啟動
我的猜測是因為Hadoop預設會將log寫到hadoop的資料夾底下
但又因為我們是掛nfs
log就等於寫到同一個資料夾底下了
這樣子hadoop好像就無法正常啟動
因此我的解決方法是將hadoop的log dir寫到各台機器自己的/tmp資料夾底下!

 $> vim /usr/local/hadoop/conf/hadoop-env.sh

然後加上:

export HADOOP_LOG_DIR=/tmp/hadoop

接著重新執行hadoop應該就可以work了!!

 

創作者介紹

[todo Austin] 奧斯丁。土豆

austintodo 發表在 痞客邦 PIXNET 留言(4) 人氣()


留言列表 (4)

發表留言
  • 阿聰
  • Hadoop 大量部署

    因為 HDFS (Hadoop File System 或縮寫 HFS) 會去找每台電腦上剩餘的硬碟空間,因此如果用 NFS 的話,會造成兩台同時競爭檔案系統的問題。

    至於大量部署的話,可以參考官方文件: http://hadoop.apache.org/core/docs/r0.18.2/cluster_setup.html 或者考慮一下用國網中心開發的 DRBL 環境來協助佈署。http://trac.nchc.org.tw/grid/wiki/jazz/DRBL_Hadoop 這裡有一些我在 Debian 環境上做的步驟,並沒有很完整,不過我有在電腦教室的環境裡面測試成功,把每一台的 D: 格式化成 ext2 並掛載給 Hadoop 用。
  • austintodo
  • 不好意思
    我不太懂您的NFS會造成兩台同時競爭檔案系統的問題@@?
    因為我是hadoop新手
    希望您能詳細解釋一下!! 感激不盡!!

    至於DRBL其實我當初在想辦法解決的時候就有看到
    只是當時直覺是直接用NFS就好了
    但如果NFS有問題
    我想DRBL是個很棒的方法
    等等再來試試看!!

    謝謝你!!
  • 阿聰
  • 不確定是不是 Hadoop 新版的問題,因為今年 Yahoo 來我們中心演講 Hadoop 的講者說 NFS 也有被支援。我們剛開始碰的時候也有遇過跟你一樣的問題,是因為 Hadoop 會去計算目前可用的空間有多大。如果 Data Node A 跟 Data Node B 共用 1TB 的 NFS 空間。那 Hadoop 的 HDFS 會以為它有 2 TB。如果你又有跑 spider 去抓資料進 HDFS 那鐵定很快就會塞爆那個 NFS 空間。這就是我講的競爭問題~
  • austintodo
  • oh 我瞭解了!
    但是我目前的架構是只有把hadoop的程式部份用NFS分享出去
    (也就是只有分享/usr/local/hadoop-0.18.2)
    HDFS的部份都還是寫入到每個node本機上面的/tmp
    所以應該沒有這個問題..吧? XD
    謝謝你的回覆!!