原本架好的2-node cluster太小,突然多了兩台機器可以加進來

在此記錄一下如何新增node,還有遇到的問題與解決方式

原本正在執行的Hadoop process都不用關掉

正常來說也是要這樣的,畢竟HDFS上已經有好多檔案或是可能有其他人也要使用

但只要別執行bin/hadoop namenode -format 這個指令,HDFS上的檔案都還會存在啦~沒毀掉目錄結構

※※※以下是碎碎念※※※

作業系統不同仍然可組成同一個cluster哦

重點是Hadoop的版本必須相同!

最好就是把正在運行的/opt/hadoop資料夾整個複製到新的機器上

在測試過程中我就遇到這個問題浪費了些時間= =" 本來就知道是裝Hadoop1.1.2

所以一開始我是丟原始壓縮檔到新機器上安裝

裝好後發現datanode跑不起來

看log檔發現居然版本不同 本來在跑的是Hadoop1.1.3-SNAPSHOT

還跑去找1.1.3-SNAPSHOT到底是哪一版怎沒看過

後來發現原來是之前裝Eclipse plugin時有重新ant編譯過Hadoop

※※※碎碎念結束※※※

我的環境是

兩台Ubuntu12.04 + 兩台Ubuntu11.04(懶的重灌他們...)

Hadoop 1.1.2 base+eclipse plugin重編 變成1.1.3-SNAPSHOT

 

Step 1. 在cluster中的每台機器上加入新節點的IP與對應名稱

sudo vi /etc/hosts 

Ex:

140.xxx.xx.xx    Cloud-A

140.xxx.xx.xx    Cloud-B

名稱不能有"_"底線,系統會抓不到

Step 2.  完成新節點的SSH金鑰安全連線

只要在master node上操作,讓master可以免密碼登入其他機器就可以了

因為之前安裝Hadoop時就有產生SSH金鑰,別重新產生啊,不然原本在跑的機器可能又要重新複製金鑰

1) 檢查新機器有沒有裝ssh server

sudo apt-get install ssh openssh-server  如果新的機器從來沒裝過,需要安裝

2) 在master上複製SSH金鑰到新機器上,所有新節點都要

scp /home/使用者名稱/.ssh/authorized_keys 其他台主機名稱:/home/其他台使用者名稱/.ssh/

這邊我記得要輸入新機器的密碼~

Ex:

scp /home/user/.ssh/authorized_keys Cloud-A:/home/user/.ssh/

3) 在master上用SSH登入新機器測試

ssh Cloud-A

Step 3.  新增slaves

在原本的master上 hadoop都裝在 /opt/hadoop 路徑下

sudo vi /opt/hadoop/conf/slaves

加入 Cloud-A與Cloud-B

Step 4. 複製hadoop到新節點上

在master上

cd /opt

scp -r hadoop Cloud-A:/opt/   

如果不能直接複製到新節點的/opt下,因為需要root權限之類的訊息,

我是先複製到新節點的user權限目錄下,再到新節點上複製到/opt下

scp -r hadoop Cloud-A:/home/user/

再到新節點上

sudo cp -r /home/user/hadoop /opt

Step 5. 確定新節點的java安裝路徑

因為我的新節點裝的java版本和原本的cluster不同

如果新節點還沒裝java要先去裝一下

所以要修改hadoop-env.sh內的java路徑

Ex:  export JAVA_HOME=/usr/lib/jvm/java-6-sun

Step 6. 修改hadoop資料夾的權限

複製到/opt時它預設權限會是root

cd /opt

sudo chown -R 群組名稱:使用者名稱 hadoop

Ex: sudo chown -R user:user hadoop

Step 7. 刪除新節點上的舊logs檔案(不一定必要,只是舊的占空間)

sudo rm -r /opt/hadoop/logs

若新節點上之前有錯誤執行過hadoop datanode process

tmp資料夾也要刪除才能順利重新運行

tmp可看作是存放HDFS檔案目錄的資料夾,預設會放在/home/user下

Step 8. 在所有新節點上開啟datanode與tasktracker

cd /opt/hadoop

bin/hadoop-daemon.sh start datanode

bin/hadoop-daemon.sh start tasktracker

Step 9. jps檢查是否有datanode和tasktracker的process id

jps

顯示如下:

23883 Jps
22927 DataNode
23009 TaskTracker

再到web頁面檢查node有沒有增加

master ip:50030

打完收工~

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Celia 的頭像
    Celia

    Celia的東摸摸西摸摸

    Celia 發表在 痞客邦 留言(0) 人氣()