摘要:本文介紹了在VirtualBox下安裝3臺ubuntu虛擬機,并搭建Hadoop環境的基本步驟,最后運行了Hadoop自帶example中的wordcount例程。
1 實驗環境
VirtualBox版本:4.3.2 r90405
ubuntu虛擬機版本:ubuntu11.04
ubuntu虛擬機jdk版本:jdk⑴.6.0_45
ubuntu虛擬機hadoop版本:hadoop-0.20.2
2 整體概述
要在單獨的1臺計算機上實現Hadoop多節點散布式計算,需要通過虛擬機建立多個主機,本文使用VirtualBox虛擬機搭建多節點平臺。完成新建虛擬機、安裝ssh、配置密鑰實現無密碼訪問、安裝jdk、安裝hadoop并配置,并運行Hadoop中自帶的wordcount程序來驗證環境配置。
3 詳細步驟
3.1 虛擬機安裝
由于要同時運行多臺虛擬機,斟酌到系統負載,本次實驗選擇的是ubuntu的初期版本10.04,下載好系統鏡像文件后,打開VirtualBox,新建1個OS,經過簡單的配置后1臺虛擬機便建好了,然后啟動虛擬機,選擇鏡像文件目錄,經過系統選項后,系統便建好了,然后利用相同的方法再建1臺,3臺虛擬機分別命名為UB01、UB02和UB03,用戶名都設置為vbox,登陸密碼也都為vbox,建好后用ifconfig查看3臺虛擬機的ip地址,可以看出它們的ip各不相同,且相互之間可以ping通,以下圖所示,到這里就完成了虛擬機安裝。
能夠ping通后,再配置3臺機器的別名,這樣就不用通過ip互訪了,打開/etc/hosts,添加內容:
223.3.77.207 UB01
223.3.73.102 UB02
223.3.85.84 UB03
對UB01按如上書寫,對UB02以下,UB03則可1并推出(這里的每個ip地址都應當是ifconfig后看到的,因機而異)
設置完別名后,通過ping虛擬機別名即可ping通,結果以下圖:
3.2 ssh安裝及配置
僅僅能ping通還不夠,為了完成份布式計算系統,需要3臺機器相互之間可以無密碼訪問(或是master可以無密碼訪問slave)。首先在3臺虛擬機上安裝ssh-openserver:
sudo apt-get install ssh rsync
完成后,在個人目錄/home/vbox/下新建.ssh文件夾,在.ssh中履行:
ssh-keygen -t rsa
系統會問你1些配置,由因而初次實驗,不需要這些內容,點回車繼續下去便可。完成后會在.ssh/下生成id_rsa和id_rsa.pub兩個文件,3臺機器做一樣處理。
秘鑰生成好以后我們需要把3臺虛擬機的密鑰相互交換,如在UB01中履行
scp ~/.ssh/id_rsa.pub UB02:/home/vbox/.ssh/id_rsa.pub.UB01
scp ~/.ssh/id_rsa.pub UB03:/home/vbox/.ssh/id_rsa.pub.UB01
上述兩句的作用是把本機上的id_rsa.pub文件(UB01上密鑰)復制到UB02和UB03上的相同位置,并重命名為id_rsa.pub.UB01。
對UB02和UB03做一樣處理,完成后每個機器的/.ssh/中應當有3個密鑰,1個是自己的,另兩個是他人的,把自己的密鑰連同他人的兩個密鑰加到授權密鑰中(對UB01)
cat id_rsa.pub >> authorized_keys;
cat id_rsa.pub.UB02 >> authorized_keys;
cat id_rsa.pub.UB03 >> authorized_keys;
上述3句分別將3個密鑰加到同1個授權密鑰authorized_keys中。
對UB02和UB03做一樣處理。這樣3個機子都分別有了其它兩個機子的訪問權利。
接下來檢驗相互之間是不是可以通過ssh實現無密碼訪問,在終端輸入(對UB01):
ssh UB02;
訪問成功會顯示歡迎信息,初次訪問需要yes,以后就能夠直接訪問了,實驗截圖以下:
3.3 jdk安裝及配置
在3臺虛擬機中都要安裝jdk,只需要在1臺機子上安裝配置,同時將jdk文件夾復制給其它兩臺機子,可不用各自安裝。
我們選擇的jdk文件是jdk⑹u45-linux-i586.bin,下載完成后把.bin包移動到個人目錄/home/vbox/,履行
chmod u+x jdk⑹u45-linux-i586.bin;
sudo -s ./jdk⑹u45-linux-i586.bin;
等待安裝完成,會在當前路徑生成jdk目錄,接下來設置環境變量,在/etc/environment中添加JAVA_HOME、CLASSPATH和PATH的值,reboot后在Terminal輸入java -version會看到版本信息,證明安裝成功,安裝結果以下圖:
3.4 Hadoop安裝及配置
也是在3臺機子履行一樣的操作,可以在1臺機子上操作了,然后復制給其它機子。
將下載到的hadoop-0.20.2.tar.gz移動到個人目錄/home/vbox/,履行安裝操作:
tar -xzvf hadoop-0.20.2.tar.gz //解壓文件
會在當前路徑生成hadoop文件夾,接著修改文件夾所有者:
chown vbox:vbox hadoop-0.20.2
隨后把hadoop的環境變量加入到/etc/environment文件中,添加完后文件以下圖:
接下來需要修改hadoop/conf/目錄下的配置文件,共有6個文件需要修改,分別是masters、slaves、core-site.xml、mapred-site.xml、hdfs-site.xml、hadoop-env.sh,修改以下圖:
文件hadoop-env.sh中添加JAVA_HOME變量值,設置為:JAVA_HOME=/home/vbox/jdk1.6.0_45.以上配置信息對UB01、UB02和UB03完全1致。
3.5wordcount程序測試
本測試用的文件為file,大小分別為128M,測試時進入/home/vbox/hadoop/目錄,格式化文件系統并啟動所有服務
hadoop namenode-format;
start-all.sh
開啟服務后可以通過jps命令和網頁查看hadoop系統情況,以下圖:
建立input輸入并將文件寫入input
hadoop fs -mkdir input;
hadoop fs -put fileinput; //file是文本文件的路徑,上傳到HDFS中
履行wordcount并觀察計數結果
hadoop jarhadoop-0.20.2-examples.jar wordcount input output
實驗進程及結果以下圖: