硬件資源:
三臺CentOS5.6虛擬機(Vmware)
本機 windows7 64x
基本資源配置:
三臺虛擬機均是克隆自同一個鏡像
已經(jīng)安裝了Java環(huán)境(jdk1.6.0_25)
Hadoop路徑在/usr/hadoop/hadoop-0.20.205.0
操作步驟:
1、機器名稱規(guī)范
ip分別為128、129、130,將128設(shè)置為master,其他設(shè)置為slave
修改
/etc/sysconfig/network
/etc/hosts
兩處配置,名稱分別為hadoop-master\hadoop-slave01\hadoop-slave02
注意:此處名稱最好不用使用下劃線,有可能引發(fā)namenode的啟動異常。
2、修改Hadoop配置
在master節(jié)點的conf中修改master和slave文件,分別為機器的ip地址
修改master節(jié)點的conf中:
core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://ip-master:9000</value>
</property>
mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
hdfs-site.xm
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
注意此處的端口號均為默認(rèn)。
3、建立m-s之間的ssh連接
首先master與slave機器都需要進行ssh信任文件生成,執(zhí)行如下命令:
$ ssh-keygen -t rsa
中間需要輸入的地方直接回車,接受缺省值即可
由于使用root用戶登錄,所以密鑰文件生成在 /root/.ssh/文件夾下,存有一對密鑰id_dsa和id_dsa.pub。
此處id_dsa(私鑰)必須為其他用戶不可讀,所以文件屬性應(yīng)當(dāng)是600
在master機器執(zhí)行:
將id_dsa.pub(公鑰)復(fù)制為 authorized_keys
$ cp id_dsa.pub authorized_keys
如果是多臺機器需要,無密碼登陸,則各自機器產(chǎn)生公鑰追加到authorized_keys即可.
使用scp協(xié)議覆蓋slave端的密鑰文件夾,使得slave機器信任來自master的連接:
$ scp /root/.ssh/* ip-slave:/root/.ssh
4、啟動服務(wù)
建議將$HADOOP_HOME/bin下的所有文件給與執(zhí)行權(quán)限:
$ chmod 777 bin
master作為namenod需要執(zhí)行如下腳本:
$HADOOP_HOME/bin/hadoop namenode –format
完成后執(zhí)行 $HADOOP_HOME/bin/start-all.sh
5、問題檢查
在Hadoop根目錄下的logs文件中,檢查各個服務(wù)日志的啟動情況
6、其他情況說明:
Q: $HADOOP_HOME is deprecated
A: 基本不會產(chǎn)生任何影響。由于腳本啟動時設(shè)置了該環(huán)境變量,就會提示用戶原有環(huán)境變量失效??梢匀∠h(huán)境變量設(shè)置,或者直接去bin/hadoop中找到這句話,去掉即可
Q: 無效的選項 -jvm / Unrecognized option: -jvm
A: 在使用root用戶登錄時 bin/hadoop 腳本就會進行判斷,加上-jvm參數(shù)。此處是為了進入jsvc(http://commons.apache.org/daemon/jsvc.html),此處并不確定是否bug,也不再進行詳細的追溯,解決方法就是進入 bin/hadoop 腳本中 找到 jvm 參數(shù)并去掉。