原本架好的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
打完收工~