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免密登录时可能出现的错误最多。