這里簡單用三台虛擬機,搭建了一個兩個數據節點的hadoop機群,僅供新人學習。零零碎碎,花了大概一天時間,總算完成了。
環境
-
Linux版本:CentOS 6.5
-
VMware虛擬機
-
jdk1.6.0_45
主要分為一下幾步完成
一、安裝CentOS 6.5
當然了,如果沒有虛擬機,需要先安裝VMware,然后新建虛擬機,選擇系統鏡像即可,復制幾台,比如我的機器4G內存,最多復制兩台,一共三台。
建議這時候把所有機器進入管理員root權限:
[root@blue bin]#su
輸入密碼即可
二、修改IP
復制的三台機器ip一樣的,需要配置/etc/sysconfig/network-scripts/ifcfg-eth0文件,有幾台修改幾次,vim命令打開:
[root@blue bin]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改為:
主機修改為:192.168.183.3
三台機器ip隨便都行,比如改為
192.168.183.3
192.168.183.4
192.168.183.5
三、免登陸
我們需要讓三台機器能互相進入、控制對方。
1、配置hostname
[root@blue bin]#vim /etc/hosts
所有機器都得有,所以可以直接復制過去
[root@blue bin]#scp -rp /etc/hosts 192.168.183.4:/etc
[root@blue bin]#scp -rp /etc/hosts 192.168.183.5:/etc
2、配置network文件
[root@blue bin]#vim /etc/sysconfig/network
編輯HOSTNAME的值,就是給機器取名字:
另外兩台機器也要編輯network文件,比如三台機器分別取名blue、blue2、blue3。
重啟機器,命令輸入hostname:
就會出現剛才設置的名字.
四、生成key
1、Ssh-keygen命令
[root@blue bin]#ssh-keygen
會生成文件,保存在/root/.ssh/id_rsa,到時候會有提示的,里面有cat id_rsa.pub這個文件。
2、對於blue這台機器:
[root@blue bin]#cat id_rsa.pub > authorized_keys
生成authorized_keys文件
在blue2、blue3都執行
[root@blue bin]#ssh-keygen命令
會生成同樣文件,里面包含了控制該機器的鑰匙信息
打開blue2、blue3的id_rsa.pub文件會有形如下面內容,
鼠標選中(自動進入剪貼板),粘貼到blue機器的authorized_keys文件里面,這樣blue(主機)的authorized_keys里面就是三台機器的鑰匙,有了鑰匙,就可以訪問了。
authorized_keys里面是這樣:
3、復制鑰匙
把authorized_keys文件遠程復制到blue2、blue3機器里面,這樣每台機器都有其它機器和自己的鑰匙了。
[root@blue bin]#scp –r authorized_keys 192.168.183.4:~/.ssh
[root@blue bin]#scp –r authorized_keys 192.168.183.4:~/.ssh
4、檢查
對於blue:
[root@blue bin]#ssh blue2
[root@blue bin]#ssh blue3
會發現不需要密碼,如果還需要密碼,那就失敗了。重新檢查,大不了從頭再來。
對於另外兩台機器blue2、blue3也同樣ssh命令檢查,不需要密碼,就ok!
五、Hadoop環境配置
1、關閉防火牆
這就需要關閉三台機器防火牆:
關閉:[root@blue bin]#service iptables stop
檢查:[root@blue bin]#iptables –L
會出現:
表明防火牆成功關閉
2、安裝hadoop
在blue機器里面操作
保存hadoop文件,這里是壓縮包,放到共享目錄里面,將其復制到虛擬機blue的/usr/local/src文件夾下面
[root@blue bin]#cp /mnt/hgfs/share/hadoop-1.2.1-bin.tar.gz /usr/local/src
然后進入虛擬機的/usr/local/src下面:
解壓文件
[root@blue bin]#tar -xzvf hadoop-1.2.1-bin.tar.gz
3、修改配置文件
進入/usr/local/src/hadoop-1.2.1/conf文件夾,下面有需要配置的文件
(1)、修改masters文件
修改為:blue
(2)、修改slaves文件
修改為:
blue2
Blue3
(3)、修改core-site.xml文件
(4)、修改mapred-site.xml
(5)、修改hdfs-site.xml
(6)、配置環境修改文件hadoop-env.sh
I:安裝java
由於hadoop是基於java的,這里安裝java,並且配置JAVA_HOME環境變量
修改這個文件:
[root@blue bin]#vim ~/.bashrc
如下
JAVA_HOME值就是jdk的安裝路徑,這里安裝在/usr/local/src下面
Ii:[root@blue bin]#source ~/.bashrc 刷新文件,因為剛才修改過,除非重啟,
命令:
[root@blue bin]#Java
如果出現一些信息,表明配置java環境成功!
Iii:[root@blue bin]#vim Hadoop-env.sh
末尾加一行
export JAVA_HOME= /usr/local/src/jdk1.6.0_45
以上幾步需要細心,保證不敲錯一個字符!
4、復制hadoop到另外兩台機器blue2、blue3
[root@blue bin]#scp -rp /usr/local/src/hadoop-1.2.1 192.168.183.4:/usr/local/src
或者:
[root@blue bin]#scp -rp /usr/local/src/hadoop-1.2.1 blue2:/usr/local/src
因為配置了network文件,每台機器ip與hostname唯一對應,並且重啟生效了,所以用ip與名字是一樣的,如果沒有重啟,需要設置臨時名字:
[root@blue bin]#hostname blue
[root@blue bin]#hostname blue2
[root@blue bin]#hostname blue3
[root@blue bin]#scp -rp /usr/local/src/hadoop-1.2.1 192.168.183.5:/usr/local/src
或者:
[root@blue bin]#scp -rp /usr/local/src/hadoop-1.2.1 blue3:/usr/local/src
建議這里再檢查一下三台機器的防火牆是否關了,命令:
[root@blue bin]#Setenforce 0
[root@blue bin]#Getenforce
如果出現Permissive,表明關掉了,否則service iptables stop關掉防火牆。
5、格式化節點
進入目錄:
[root@blue bin]#cd /usr/local/src/hadoop-1.2.1/bin
執行hadoop命令:
[root@blue bin]#./hadoop namenode –format
6、啟動hadoop
[root@blue bin]#./start-all.sh
7、這時執行命令:
首先在父親(blue)里面,如果父親都有問題,肯定有問題。
[root@blue bin]#jps
出現的四個與上面圖片的必須一樣,否則表明有前面的5個配置文件有問題,返回去檢查。
如果沒有問題,再對blue2、blue3兩台機器執行命令:
[root@blue bin]#jps
哈哈,會發現錯誤:bash:jps:command not found
其實是不能發現java的環境變量,前面只配置了父親blue的java環境變量。
需要把主機blue的環境變量文件.bashrc復制到兩台孩子機器blue2、blue3的對應位置下面,覆蓋原有的.bashrc文件。需要三台機器jdk位置安裝一樣哦,這里前面都統一安裝在/usr/local/src目錄下面。
[root@blue bin]#scp -rp ~/.bashrc blue2:~/
[root@blue bin]#scp -rp ~/.bashrc blue3:~/
還要分別在blue2、blue3里面,記得source ~/.bashrc,重新加載文件,才能生效
8、停止hadoop
[root@blue bin]#./stop-all.sh
繼續5、6步,即在blue里面的hadoop的bin目錄下面,這里所有執行的文件都在bin目錄,下面。
然后在孩子節點機器blue2、blue3命令:
[root@blue bin]#jps:
英文意思是:4609數據節點、4700任務節點
出現的三個必須一樣,否則表明前面的5個配置文件有問題,返回去檢查。然后重復8——5——6——7步驟。
如果不出意外,按照這種步驟是可以配置成功的!