close

之前安裝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了!!

 

arrow
arrow
    全站熱搜

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