配置環境及有關工具:ubuntu10.04? 、hadoop0.20.2 、 jdk1.6.0_29
我們的機器有三臺,一臺當作namenode、兩臺當作datanode:
namenode:IP:192.168.0.25、機器名:kiddenzj (這里的機器名要注意:機器名不能包含下劃線“_”,一開始沒注意后來找了半天才發現這個原因)
datanode:IP:192.168.0.8 、機器名:kiddenxcc??
???????????????????? IP192.168.0.66、機器名: kiddenhw
集群里所有登陸的用戶名和密碼都要保持相同,我在這里創建了名為grid的用戶,后面的步驟就是在這個用戶下進行的。
配置步驟:
1)安裝ssh
輸入命令:
[java]?view plaincopy
apt-get?install?ssh?? 2)SSH配置
SSH配置主要是為了實現在機器間執行指令時不再需要輸入密碼,在所有的機器上建立.ssh目錄,這里我們建立在/home/grid下面:
[html]?view plaincopy
mkdir?.ssh?? 然后在namenode機器上生成密鑰對,執行:
[html]?view plaincopy
ssh-keygen?-t?rsa?? 然后一直按Enter鍵,就會按照默認選項生成密鑰對保存在.ssh/id_rsa文件中。
繼續執行如下命令,把密鑰傳遞給每個datanode節點:
[java]?view plaincopy
cd?~/.ssh?? cp?id_rsa.pub?authorized_keys?? scp?authorized_keys?kiddenhw:/home/grid/.ssh?? scp?authorized_keys?kiddenxcc:/home/grid/.ssh?? ?然后分別在每臺datanode機器上執行如下命令,以改變authorized_keys文件的許可權限:
[html]?view plaincopy
chmod?644?authorized_keys?? 到此,從namenode發起的到其他datanode節點的SSH連接,就會只需在第一次登錄是輸入密碼,以后則不再需要。
可以通過如下命令發起連接:
[html]?view plaincopy
ssh?kiddenhw?? 3)jdk的安裝(namenode機和datanode機均按此安裝)
下載jdk-6u29-linux-i586.bin,安裝到/usr/java下,cd到usr/java下,
[python] view plaincopy
sudo?chmod?u+x?jdk-6u29-linux-i586.bin??sudo?./jdk-6u29-linux-i586.bin?? 接下來要設置java的環境變量輸入命令:
[javascript]?view plaincopy
?sudo?gedit?/etc/profile?? 在文件的最后添加以下語句:
[html]?view plaincopy
JAVA_HOME=/usr/java/jdk1.6.0_29?? ?? export?JRE_HOME=/usr/java/jdk1.6.0_29/jre?? ?? export?CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH?? ?? export?PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH?? 保存退出,然后執行source /etc/profile即可。
輸入java -version 命令,出現如下信息就表示配置成功
[java]?view plaincopy
java?version?"1.6.0_29"?? Java(TM)?SE?Runtime?Environment?(build?1.6.0_29-b11)?? Java?HotSpot(TM)?Server?VM?(build?20.4-b02,?mixed?mode)?? 4)hadoop的安裝配置(只是在namenode端安裝配置,完成后namenode可以直接把配置好的hadoop發送到各個datanode端)
在這里,下載hadoop-0.20.2.tar.gz,然后解壓到/home/grid/下即可,
在hadoop文的件夾下需要建立幾個文件夾,如下:
(這里一開始沒有創建,結果查看運行信息的時候,雖然datanode節點都有進程在運行,但livenodes節點依然為0)
[html]?view plaincopy
mkdir?tmp?? mkdir?hdfs?? mkdir?hdfs/name?? mkdir?hdfs/data?? 接下來需要修改hadoop的conf文件夾下的配置信息:
修改hadoop-env.sh,加入如下語句,使得hadoop能夠找到java的路徑。:
[java]?view plaincopy
export?JAVA_HOME=/usr/java/jdk1.6.0_2?? 修改core-site.xml,如下:
[java]?view plaincopy
<configuration>?? <property>?? <name>fs.default.name</name>?? <value>hdfs:?? </property>?? </configuration>?? 修改hdfs-site.xml,如下
[cpp]?view plaincopy
<configuration>?? <property>?? <name>dfs.replication</name>?? <value>1</value>?? </property>?? </configuration>?? 修改mapred-site.xml,如下:
[java]?view plaincopy
<configuration>?? <property>?? <name>mapred.job.tracker</name>?? <value>kiddenzj:9001</value>?? </property>?? </configuration>?? masters里寫入作為namenode節點機器的名稱,我們這里是:kiddenzj
slaves里寫入作為datanode節點的機器名,這里是:kiddenhw和kiddenxcc
到此,hadoop的有關配置已經完成,namenode端通過如下命令把配置好的hadoop發送到各個datanode處:
[html]?view plaincopy
scp?-r?hadoop-0.20.2?kiddenhw:/home/grid?? scp?-r?hadoop-0.20.2?kiddenxcc:/home/grid?? 5)修改每臺機器上/etc下面的hosts文件,也就是寫入所有的機器名和對應IP地址(包括namenode和datanode節點),我們這里修改后如下:
[java]?view plaincopy
127.0.0.1???localhost?? 192.168.0.8????kiddenxcc?? 192.168.0.25???kiddenzj?? 192.168.0.66???kiddenhw?? 6)
到此基本配置已經完成,在namenode端cd到hadoop文件夾下,格式化分布式文件系統:
[html]?view plaincopy
bin/hadoop?namenode?-format?? 下面接著在namenode端啟動hadoop進程:
[html]?view plaincopy
bin/start-all.sh?? 如果沒有其它差錯的話,hadoop可以正常啟動,并能夠看到如下結果:
在namenode端用jps命令查看啟動情況,如下:
[html]?view plaincopy
grid@kiddenzj:~/hadoop-0.20.2$?jps?? xxxx?Jps?? xxxx?Namenode?? xxxx?Secondarynamenode?? xxxx?JobTracker?? 在datanode端用jps查看啟動情況,如下:
[html]?view plaincopy
grid@kiddenhw:~/hadoop-0.20.2$?jps?? xxxx?Jps?? xxxx?DataNode?? xxxx?TaskTracker?? 然后可以通過如下地址來查看集群運行狀況:
[html]?view plaincopy
????http://kiddenzj:50030?? ????http://kiddenzj:50070?? <pre?name="code"?class="html">????http://kiddenhw:50060</pre>?? <pre></pre>?? <pre></pre>?? <pre></pre>?? <pre></pre>?? <pre></pre>?? <pre></pre>?? ?????
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的ubuntu10.04+hadoop0.20.2平台配置(完全分布式模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。