最近研究數據密集型計算相關領域知識,做相關實驗時用到MapReduce編程模型,Hadoop是基於MapReduce較成熟的分佈式程序架構。本文介紹相關Hadoop環境在linux下搭建的方法。
準備:10臺裝有ylmf os的機器,相互之間局域網互聯,相同的用戶名
開始:
從上述10臺機器中,選擇一臺主機(作爲主節點,後面用到),接下來大部分的設置以及其它九臺機器的設置在此機器上完成。
1.首先安裝jdk,如果系統可以連接互聯網,可以直接在命令端輸入命令,計算機會自動下載,命令爲:
sudo apt-get install jdk
輸入以後系統會列出jdk相關軟件,可根據提示安裝。注:安裝過程要求輸入密碼。如果系統不能連接互聯網,用戶可以自行在其它電腦上下載拷貝過來解壓到相關文件夾,本文的安裝文件夾在usr\local\java(如果沒有java文件夾,新建)
2.接下來配置jdk環境變量,配置方法有別於windows下的配置,Linux下的環境變量配置需要修改etc\profile文件,將相關變量信息填入。具體修改方法爲:命令行輸入
sudo gedit etc\profile
輸入密碼,打開profile文件,這裏有必要說明一下,如果您的計算機沒有gedit軟件的話可能系統會報錯,您可以有兩種方式來解決,第一,安裝gedit軟件,按上面所述
sudo apt-get install gedit
安裝即可。第二,可以利用系統自帶的文本編輯軟件來打開
sudo vi etc\profile
該軟件不如gedit好用。(注意:vi用法,按i鍵表示開始編輯文本,文本編輯結束後按esc鍵,在最後一行輸入:wq,含冒號,保存。vi其它用法可自己網上問度娘)。然後就是具體的環境變量,打開文件後,輸入
export JAVA_HOME=\usr\local\java\jdk1.7(jdk安裝的目錄)</b>
export CLASSPATH=.:$JAVA_HOME/lib</br>
export PATH=$PATH:$JAVA_HOME/bin。
保存以後,檢查是否成功,在命令行輸入
java -version
如果出現jdk版本,則成功,否則還有其它問題,自己查找。
3.然後安裝ssh,安裝方法請參見ssh,接下來是生成ssh密鑰
先在用戶所在文件夾建密鑰文件夾,命令爲:
cd ~
mkdir .ssh //建立名爲.ssh的文件夾
進入.ssh,生成密鑰
cd .ssh
ssh-keygen
然後一路回車,直到生成密鑰,系統自動生成一個名爲id_rsa.pub和id_rsa的文件
然後將.pub文件拷貝到密鑰權限文件夾中,命令爲:
cp id_rsa.pub authorized_keys
本機ssh安裝完成,測試一下
ssh localhost
如果出現要求你確認連接的選項時,證明ssh已經安裝完成。
4.接下來的任務是配置hosts文件,配置該文件的目的是將來計算機之間傳輸時不用再次輸入計算機靜態地址,打開hosts所在文件夾
sudo gedit /etc/hosts //或者sudo vi /etc/hosts
打開文件後,加入其它9臺計算機名稱以及預先分配的靜態IP,將本機localhost名改爲預先分配的計算機名,形如:
c1 192.168.1.101
……
c9 192.168.1.109
保存退出。
5.改hostname,本機的計算機名,原理如上
打開hostname文件
sudo gedit /etc/hostname
將127.0.0.1 localhost 改爲 127.0.0.1 c0 保存退出
6.接下來是比較麻煩的一步,麻煩的要放在後面來解決,就是給每臺機器分配靜態IP,同上,也是打開相關文件,修改配置,該文件也是etc下network中的interfaces文件
sudo gedit /etc/network/interfaces
打開文件以後將以下內容添加到最上面:
auto eth1
iface eth1 inet static
address 192.168.1.* //*代表預先分配好的IP地址
gateway 192.168.1.1
netmask 255.255.255.0
修改完成後文件變爲
auto eth1
iface eth1 inet static
address 192.168.1.*
gateway 192.168.1.1
netmask 255.255.255.0
auto lo
iface lo inet loopback
完成後保存退出
驗證是否修改成功,利用ifconfig查看IP相關信息,該命令如windows下的ipconfig。
然後修改計算機名稱,即如上所述/etc/hostname文件中localhost計算機名改爲預先設定的名稱,如c1。特別要注意的是名稱和ip一定要相對應於主節點hosts文件所述。
設置完成9臺機器後,本步完成。
7.ip設置完成後,說明機器之間可以傳輸文件。首先要從主節點發送ssh密鑰給所有機器,以便於以後主節點訪問其它節點時輸入密碼的麻煩,發送完成後只要輸入對應主機名便可直接進入該機器進行相關操作,不用輸入密碼。具體操作方法爲:
scp authorized_keys 主機名:用戶名/home/.ssh,例如:
scp authorized_keys c1:/student/home/.ssh
scp authorized_keys c2:/student/home/.ssh
scp authorized_keys c3:/student/home/.ssh
scp authorized_keys c4:/student/home/.ssh
scp authorized_keys c5:/student/home/.ssh
8.jdk的發送,將主機上已經安裝好的jdk文件發送到其它分機,(由於ubuntu安全設置,只能發送到用戶文件夾下,這裏設用戶文件夾爲student)
scp usr/local/java c1:/student/
……
scp usr/local/java c9:/student/
發送完成後修改分節點的jdk配置文件,即/etc/profile文件,將jdk路徑改爲/student/java/jdk1.7
需要悠九臺計算機,這裏有一個相對比較簡單的方法,利用主機遠程登錄分機,遠程操作。
9.前面所講的都配置完成以後,開始安裝hadoop,hadoop安裝文件隨處可見,較新的版本爲0.20(不明白的去問度娘或者谷姐),下載完成後解壓到用戶student文件夾。
10.配置hadoop文件夾下conf/hadoop-site.xml文件
sudo gedit /hadoop/conf/hadoop-site.xml
輸入如下內容:
<property>
<name>fs.default.name</name>
<value>hdfs://c0:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>c0:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>home/hadoop/tmp</value>
</property>
11.修改conf/master和conf/salves文件,分別輸入主機名和所有分機名。
gedit conf/master
gedit conf/salves
12.拷貝hadoop文件夾到其它分節點。
Scp -r /hadoop c1:/student
Scp -r /hadoop c2:/student
Scp -r /hadoop c3:/student
Scp -r /hadoop c4:/student
Scp -r /hadoop c5:/student
Scp -r /hadoop c6:/student
Scp -r /hadoop c7:/student
Scp -r /hadoop c8:/student
Scp -r /hadoop c9:/student
至此hadoop配置完成。
文章寫的稍急,可能還有些漏洞或者不明確的地方,有任何問題可以聯繫我,在線或者qq:710263209