之前介紹過本地模式(偽分布式)安裝運行Hadoop,今天介紹一下如何在分布式的環(huán)境下安裝并運行Hadoop。
0x00 ? ?介紹
首先說一下環(huán)境:一個NameNode節(jié)點贼邓,一個SecondaryNameNode節(jié)點,三個DataNode節(jié)點
NameNode -- hostname:namenode.athrob.com -- IP:192.168.187.128 -- 【NameNode節(jié)點和JobTracker節(jié)點】
SecondaryNameNode -- hostname:snn.athrob.com -- IP:192.168.187.129 -- 【SecondaryNameNode節(jié)點】
DataNode1 -- hostname:dn1.athrob.com -- IP:192.168.187.130 -- 【DataNode和TaskTracker節(jié)點】
DataNode2 -- hostname:dn2.athrob.com -- IP:192.168.187.131 -- 【DataNode和TaskTracker節(jié)點】
DataNode3 -- hostname:dn3.athrob.com -- IP:192.168.187.132 -- 【DataNode和TaskTracker節(jié)點】
0x01 ? ?其他準備
[1]修改hostname
CentOS修改hostname需要修改兩個文件:
(1) /etc/sysconfig/network
(2) /etc/hosts
例如闷尿,我想修改我的hostname為:snn.athrob.com
一塑径、vi打開[1]中的這個network文件,將HOSTNAME=localhost.localdomain改為HOSTNAME=snn.athrob.com
二填具、編輯(2)中的這個hosts文件柬赐,將其中l(wèi)ocalhost.localdomain替換為snn.athrob.com
注:保存重啟后生效
[2]修改hosts文件淤刃,使前面的hostname和IP地址對應起來
仍然編輯(2)中的hosts文件,添加:
192.168.187.128? namenode.athrob.com
192.168.187.129? snn.athrob.com
192.168.187.130? dn1.athrob.com
192.168.187.131? dn2.athrob.com
192.168.187.132? dn3.athrob.com
注:使用hostname訪問删性,避免使用IP地址訪問锈死。
0x02 ? ?配置ssh免密碼登錄
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
(1)在NameNode,SecondaryNameNode,DataNode1,DataNode2,DataNode3上配置如下命令:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
(2)將NameNode上生成的公鑰copy到其他四臺機器上:
scp ~/.ssh/id_dsa.pub root@snn.athrob.com:~
注:此命令是將本機的ssh公鑰上傳到SecondaryNameNode這臺機器上钳吟。
然后躺孝,在SecondaryNameNode上铡溪,進入root主目錄,ls一下會看到剛才copy的來的這個id_dsa.pub文件
將該文件追加到~/.ssh/authorized_keys文件中:
cat id_dsa.pub >> ~/.ssh/authorized_keys
(3)確認免密碼登錄成功
在NameNode上輸入:ssh root@snn.athrob.com
如果能直接登錄到SecondaryNameNode這臺機器上衡蚂,則說明免密碼登錄配置成功窿克。
從NameNode上免密碼登錄到其他DataNode節(jié)點上,參考上面步驟毛甲。
0x03 ? ?配置JDK
設置JAVA環(huán)境變量:
cd ~
vi .bash_profile
添加下面三行:
export JAVA_HOME=/opt/jdk1.8.0_92
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
注:其中/opt/jdk1.8.0_92為JDK目錄的路徑年叮,其它機器配置JAVA環(huán)境變量方法一樣
0x04 ? ?配置Hadoop
假設我的Hadoop目錄為:/opt/hadoop-1.2.1
cd /opt/hadoop-1.2.1/conf
該目錄下有六個文件需要修改:
hadoop-env.sh、core-site.xml玻募、hdfs-site.xml只损、masters、slaves七咧、mapred-site.xml
(1)hadoop-env.sh
修改JAVA_HOME的路徑
找到JAVA_HOME跃惫,修改如下:
export JAVA_HOME=/opt/jdk1.8.0_92
(2)core-site.xml
配置NameNode和Hadoop的工作目錄:
(3)hdfs-site.xml
配置Block的副本數:(默認為3,不能大于DataNode的個數)
(4)masters
配置SecondaryNameNode:
將local改為:snn.athrob.com
(5)slaves
配置DataNode:
dn1.athrob.com
dn2.athrob.com
dn3.athrob.com
(6)mapred-site.xml
配置JobTracker:
注:NameNode和SecondaryNameNode不能配置為同一臺機器艾栋。TaskTracker不用配置爆存,因為TaskTracker存在DataNode上。
從NameNode上復制Hadoop這6個配置文件到相應其他節(jié)點上的Hadoop配置目錄
為了省事蝗砾,也可以直接copy整個配置目錄
scp /opt/hadoop-1.2.1/conf/* root@snn.athrob.com:/opt/hadoop-1.2.1/conf/
0x05 ? ?啟動Hadoop
在NameNode上先较,進入Hadoop目錄下的bin目錄下:
(1)啟動前格式化NameNode
./hadoop namenode -format
(2)啟動NameNode,SecondaryNameNode,DataNode,JobTracker,TaskTracker
./start-all.sh
0x06 ? ?JobTracker或者其他節(jié)點起不來
說明:有的時候雖然說我們在NameNode上執(zhí)行了./start-all.sh,也看到輸出NameNode悼粮、SecondaryNameNode闲勺、DataNode、JobTracker扣猫、TaskTracker啟動了菜循。但是jps查看的時候,就是沒有相應的進程申尤!
這個時候請關閉Linux的防火墻再重新啟動hadoop癌幕,應該就可以了!
service iptables ?stop
或ufw disable
下次準備介紹瀑凝,在Windows環(huán)境下序芦,使用Eclipse編譯Hadoop中的eclipse插件。
不足之處粤咪,請批評指正谚中。
如有問題,請私信聯系寥枝。
謝謝宪塔!