目前環境說明:
主機名 IP位址 用途
hadoop1 192.168.3.65 namenode、jobtracker
hadoop2 192.168.3.66 datanode、tasktracker
hadoop3 192.168.3.67 datanode、tasktracker、secondarynamenode
hadoop4 192.168.3.64 datanode、tasktracker
要求準備新增一台datanode節點到叢集中,機器資訊如下:
主機名 IP位址 用途
stat.localdomain 172.16.7.164 datanode
部署前提條件:
新增的datanode節點務必能和叢集中的每個節點互相ping通!這個屬于網絡的問題就不多讨論了!
1、新增的datanode節點的hosts檔案增加如下内容:
192.168.5.54 master
2、從hadoop1節點拷貝id_rsa.pub并重命名為authorized_keys
[root@stat .ssh]# scp 192.168.3.65:/root/.ssh/id_rsa.pub authorized_keys
3、從hadoop1節點拷貝id_rsa到新增datanode上
[root@stat .ssh]# scp 192.168.3.65:/root/.ssh/id_rsa .
4、驗證hadoop1登入到新增datanode,并且新增datanode登入到hadoop1是否需要密碼登入?
[root@hadoop1 .ssh]# ssh stat.localdomain
The authenticity of host 'stat.localdomain (172.16.7.164)' can't be established.
RSA key fingerprint is b5:50:2e:4a:1e:81:37:a2:4d:e3:6c:a0:cd:a8:1a:1b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'stat.localdomain,172.16.7.164' (RSA) to the list of known hosts.
Last login: Mon Jul 2 07:04:38 2012 from zengzhunzhun.ninetowns.cn
[root@stat .ssh]# ssh hadoop1
Last login: Mon Jul 2 10:49:34 2012 from zengzhunzhun.ninetowns.cn
5、從hadoop1節點拷貝jdk到新增datanode上。并且設定相應的環境變量
[root@stat ~]# mkdir -p /usr/java
[root@stat ~]# cd /usr/java
[root@stat java]# scp -r hadoop1:/usr/java/jdk* .
添加環境變量,在/root/.bash_profile檔案裡增加如下内容:
export JAVA_HOME=/usr/java/jdk1.6.0_14
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
執行如下指令讓變量生效
[root@stat ~]# source .bash_profile
顯示如下則說明jdk沒有問題。
[root@stat ~]# java -version
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
6、拷貝hadoop應用到新增的datanode節點上
[root@stat ~]# scp -r hadoop1:/root/hadoop .
7、啟動新增的datanode節點的datanode和tasktracker進行
[root@stat ~]# hadoop/bin/hadoop-daemon.sh start datanode
[root@stat ~]# hadoop/bin/hadoop-daemon.sh start tasktracker
8、最後測試,我們可以在浏覽器裡面檢視,或者hadoop dfsadmin -report檢視都行!我這裡就不測試了!應該沒有任何問題的!但是這裡有個建議,這裡新增了一台datanode節點,下次start-all.sh的時候,這個是啟動不起來的,除非把datanode節點加入到配置檔案中并且rsync到每個節點哈!切記!!!
9、還有一點,有很多文章說要對新加的節點進行塊均衡。不然以後的資料都會放到新增的datanode上,也就是執行如下指令:
[root@stat ~]# hadoop/bin/start-balancer.sh
但是我自己做過實驗,不進行塊均衡,後續塊檔案也是分開放的,并不是隻放到新增的datanode上。這點也許我做的不太充分的測試,等生産環境上了就可以知道了!