用於測試,我用4臺虛擬機搭建成了hadoop結構java
我用了兩個臺式機。一個xp系統,一個win7系統。每臺電腦裝兩個虛擬機,要否則內存就滿了。node
一、安裝虛擬機環境linux
Vmware,收費產品,佔內存較大。ubuntu
或vim
Oracle的VirtualBox,開源產品,佔內存較小,但安裝ubuntu過程當中,重啓會出錯。windows
我選Vmware。bash
二、安裝操做系統服務器
Centos,紅帽開源版,接近於生產環境。網絡
Ubuntu,操做簡單,方便,界面友好。ssh
我選Ubuntu12.10.X 32位
三、安裝一些經常使用的軟件
在每臺linux虛擬機上,安裝:vim,ssh
sudo apt-get install vim
sudo apt-get install ssh
在客戶端,也就是win7上,安裝SecureCRT,Winscp或putty,這幾個程序,都是依靠ssh服務來操做的,因此前提必須安裝ssh服務。
service ssh status 查看ssh狀態。若是關閉使用service ssh start開啓服務。
SecureCRT,能夠經過ssh遠程訪問linux虛擬機。
winSCP或putty,能夠從win7向linux上傳文件。
四、修改主機名和網絡配置
主機名分別爲:master,host2,host3,host4。
sudo vim /etc/hostname
網絡配置,包括ip地址,子網掩碼,DNS服務器。如上圖所示。
五、修改/etc/hosts文件。
修改每臺電腦的hosts文件。
hosts文件和windows上的功能是同樣的。存儲主機名和ip地址的映射。
在每臺linux上,sudo vim /etc/hosts 編寫hosts文件。將主機名和ip地址的映射填寫進去。編輯完後,結果以下:
六、配置ssh,實現無密碼登錄
無密碼登錄,效果也就是在master上,經過 ssh host2 或 ssh host3 或 ssh host4 就能夠登錄到對方計算機上。並且不用輸入密碼。
四臺虛擬機上,使用 ssh-keygen -t rsa 一路按回車就好了。
剛纔都做甚了呢?主要是設置ssh的密鑰和密鑰的存放路徑。 路徑爲~/.ssh下。
打開~/.ssh 下面有三個文件
authorized_keys,已認證的keys
id_rsa,私鑰
id_rsa.pub,公鑰 三個文件。
下面就是關鍵的地方了,(咱們要作ssh認證。進行下面操做前,能夠先搜關於認證和加密區別以及各自的過程。)
①在master上將公鑰放到authorized_keys裏。命令:sudo cat id_rsa.pub >> authorized_keys
②將master上的authorized_keys放到其餘linux的~/.ssh目錄下。
命令:sudo scp authorized_keys hadoop@10.10.11.192:~/.ssh
sudo scp authorized_keys 遠程主機用戶名@遠程主機名或ip:存放路徑。
③修改authorized_keys權限,命令:chmod 644 authorized_keys
④測試是否成功
ssh host2 輸入用戶名密碼,而後退出,再次ssh host2不用密碼,直接進入系統。這就表示成功了。
七、上傳jdk,並配置環境變量。
經過winSCP將文件上傳到linux中。將文件放到/usr/lib/java中,四個linux都要操做。
解壓縮:tar -zxvf jdk1.7.0_21.tar
設置環境變量 sudo vim ~/.bashrc
在最下面添加:
export JAVA_HOME = /usr/lib/java/jdk1.7.0_21
export PATH = $JAVA_HOME/bin:$PATH
修改完後,用source ~/.bashrc讓配置文件生效。
八、上傳hadoop,配置hadoop
經過winSCP,上傳hadoop,到/usr/local/下,解壓縮tar -zxvf hadoop1.2.1.tar
再重命名一下,sudo mv hadoop1.2.1 hadoop
這樣目錄就變成/usr/local/hadoop
①修改環境變量,將hadoop加進去(最後四個linux都操做一次)
sudo vim ~/.bashrc
export HADOOP_HOME = /usr/local/hadoop
export PATH = $JAVA_HOme/bin:$HADOOP_HOME/bin:$PATH
修改完後,用source ~/.bashrc讓配置文件生效。
②修改/usr/local/hadoop/conf下配置文件
hadoop-env.sh,
(上面這張圖片,有一些問題,只export JAVA_HOME進去就能夠了,不用export HADOOP_HOME和PATH了 )
core-site.xml,
hdfs-site.xml,
mapred-site.xml,
master,
slave,
上面的hadoop-env.sh,core-site.xml,mapred-site.xml,hdfs-site.xml,master,slave幾個文件,在四臺linux中都是同樣的。
配置完一臺電腦後,能夠將hadoop包,直接拷貝到其餘電腦上。
③最後要記得,將hadoop的用戶加進去,命令爲
sudo chown -R hadoop:hadoop hadoop
sudo chown -R 用戶名@用戶組 目錄名
④讓hadoop配置生效
source hadoop-env.sh
⑤格式化namenode,只格式一次
hadoop namenode -format
⑥啓動hadoop
切到/usr/local/hadoop/bin目錄下,執行 start-all.sh啓動全部程序
⑦查看進程,是否啓動
jps
master,
host2,
host3,host4,的顯示結果,與host2相同。