1. 首先用五臺機器搭建分佈式,一個爲master,剩下四個分別爲slave01、slave02、slave03, slave04。
2. 修改機器名
五臺機器分別都執行sudo vim /etc/hostname命令,將文件中的內容分別改爲master、slave01、slave02、slave03, slave04。
3. 重啓機器,發現機器名修改成功。
4. 修改master的hosts文件,並拷貝到每臺slave上。
(1)修改hosts文件
sudo vim /etc/hosts
5. 將hosts文件拷貝到另外兩臺臺機器上,覆蓋原來的hosts文件。
master:
scp /etc/hosts hadoop@slave01的IP:~
scp /etc/hosts hadoop@slave02的IP:~
scp /etc/hosts hadoop@slave03的IP:~
scp /etc/hosts hadoop@slave04的IP:~
slaver:
sudo mv hosts /etc/hosts
6. 配置master免密登錄
master:
ssh-keygen -t rsa
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
scp .ssh/id_rsa.pub hadoop@slave01的IP:~/
scp .ssh/id_rsa.pub hadoop@slave02的IP:~/
scp .ssh/id_rsa.pub hadoop@slave03的IP:~/
scp .ssh/id_rsa.pub hadoop@slave04的IP:~/
slave:
cat id_rsa.pub >> .ssh/authorized_keys
7. 將hadoop-2.7.6文件從本地拖拽到虛擬機桌面,然後移動到/opt,然後進行解壓。
sudo mv hadoop-2.7.6.tar.gz /opt
cd /opt
sudo tar -zxvf hadoop-2.7.6.tar.gz
8. 編輯配置文件
(1)編輯hadoop-env.sh文件
sudo vim hadoop-env.sh
改爲:
(2)編輯core-site.xml文件
sudo vim core-site.xml
(3)編輯mapred-site.xml文件
首先應通過複製mapred-site.xml.template得到mapred-site.xml文件,然後再進行編輯。
cp mapred-site.xml.template mapred-site.xml
sudo vim mapred-site.xml
(4)編輯hdfs-site.xml文件
sudo vim hdfs-site.xml
(5)編輯masters文件
sudo vim masters
添加masters的IP地址到該文件
(6)編輯slaves文件
sudo vim slaves
添加slave01、slave02、slave03、slave04的IP地址到該文件,並且刪除localhost
9. 將配置文件拷貝到到各臺slave
master:
scp hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml masters slaves hadoop@slave的IP地址:~
slave:
sudo mv *.xml /opt/hadoop-2.7.6/etc/hadoop
sudo mv hadoop-env.sh masters slaves /opt/hadoop-2.7.6/etc/hadoop
10. 設置環境變量
master:
master上配置環境變量,然後將文件發給各臺slave
sudo vim /etc/profile
source /etc/profile
scp /etc/profile hadoop@slave的ip地址:~
slave:
sudo mv profile /etc/profile
source /etc/profile
11. 更改hadoop-2.7.6的所屬人和所屬組(root用戶)
chown hadoop:hadoop -R hadoop-2.7.6/
chmod 775 -R hadoop-2.7.6/
12. master格式化namenode
./hdfs namenode -format
注:只格式化一次,若格式化多次可能導致VERSION不一致,啓動namenode和datanode時報錯。
解決方法:
① 見https://blog.csdn.net/czw698/article/details/50507265
② 刪除存name和data的目錄,再重新格式化
13. 運行hadoop
./start-all.sh
14. 查看進程
jps
master進程:
slave進程:
15. 停止hadoop
./stop-all.sh
這裏報錯是因爲防火牆問題,自己配置可能會出問題,可以選擇關閉防火牆。
總結:搭建集羣時,所有機器要擁有共同的用戶,從而避免權限不夠的錯誤;並且配置以及版本都應相同,否則可能會出現錯誤,尤其是在ssh免密登錄時可能出現的錯誤最多。