请在搭建伪分布式的基础上搭建完全分布式
1、克隆两台虚拟机(点击蓝色超链接有如何克隆虚拟机)。
2、克隆完成之后首先在三台机器上都分别输入 $ ifconfig
查看是否有eth0
如下:是正确的。
【
eth0 Link encap:Ethernet HWaddr 00:0C:29:01:E6:92
inet addr:192.168.85.141 Bcast:192.168.85.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe01:e692/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1021 errors:0 dropped:0 overruns:0 frame:0
TX packets:441 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:288048 (281.2 KiB) TX bytes:54808 (53.5 KiB)lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)】
如果有eth0则执行第三步。
如果没有eth0,则需要解决eth0消失或变成了eth1的问题。<=====点击蓝色超链接。
然后再执行第三步
3、配置静态ip --------三台机器都需要配置静态ip。
我使用net模式。----------点击该蓝色超链接查看如何修改ip地址。
4、修改hosts文件 ----三台机器都需要修改。
$ sudo vim /etc/hosts
追加:【静态ip 主机名】
【192.168.85.113 dog1
192.168.85.114 dog2
192.168.85.115 dog3
】
5、关闭防火墙 --------三台机器都需要关闭。
$ sudo service iptables stop
$ sudo service ip6tables stop
这个命令可以临时关闭防火墙
$ sudo chkconfig iptables off
$ sudo chkconfig ip6tables off
这个命令可以永久关闭防火墙(需要reboot)
$ sudo chkconfig iptables --list
$ sudo chkconfig ip6tables --list
这个命令可以查看防火墙的状态
6、关闭selinx服务
重启后永久关闭selinux
$ sudo vi /etc/selinux/config
将文件里标红的部分改为disabled
【
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
】
$ sudo sestatus -v
这个命令可以查看selinux的状态
$ sudo setenforce 0
这个命令可以临时关闭selinux
7、同步时间 -----三台机器都需要同步时间
查看当前系统时间:
$ date
时间同步:
$ sudo ntpdate -u time.windows.com
若不加上-u参数, 会出现以下提示:no server suitable for synchronization found;
连不上时间服务器IP也会出现此提示,这个时侯可以换一个时间服务器。
-u:此参数可以越过防火墙与主机同步
将系统时间同步到硬件时钟上:
$ sudo hwclock -w
8、验证无密码登陆是否可用(三台机器都可以互相无密码登陆)
$ ssh dog2
$ ssh dog3
9、修改主机名
$ sudo vim /etc/sysconfig/network----克隆的机器都需要修改。
修改为:
【HOSTNAME=???】
使之生效:
$ reboot
10、建议将之前配置的伪分布式备份一下 ------三台机器都是如此
$ cp -r /home/betty/soft/hadoop/etc/hadoop /home/betty/soft/hadoop/etc/pseudo_hadoop -----备份伪分布式
$ mv /home/betty/soft/hadoop/etc/hadoop /home/betty/soft/hadoop/etc/cluster_hadoop -----创建完全分布式的配置
$ ln -s /home/betty/soft/hadoop/etc/cluster_hadoop /home/betty/soft/hadoop/etc/hadoop -----创建软连接指向完全分布式的配置
11、配置Hadoop的配置文件。
配置core-site.xml
【
fs.defaultFS
hdfs://master:9000
】
hadoop.tmp.dir
/home/betty/soft/tmp
配置hdfs-site.xml
【
】
dfs.replication
3
配置yarn-site.xml
【
yarn.nodemanager.aux-services
mapreduce_shuffle
】
yarn.resourcemanager.hostname
master
配置mapred-site.xml
此目录下没有该文件,我们需要将mapred-site.xml.template 复制一份,改成此名。
$ cp mapred-site.xml.template mapred-site.xml
然后再修改:
【
】
mapreduce.framework.name
yarn
配置slaves:决定了那台机器里边有datanode
【 dog1
dog2
dog3】
以上配置三台机器必须都要相同。可以先配置一台机器,然后将/home/betty/soft/hadoop整个文件夹发送到其他机器上这样比较容易。
$ scp -r ~/soft/hadoop betty@dog2:~/soft/hadoop-2.7.3
$ scp -r ~/soft/hadoop betty@dog3:~/soft/hadoop-2.7.3
12、重启所有机器
此时,我们集群搭建成功了,为了确保配置文件生效,我们最好reboot所有的机器
13、进行格式化分布式文件系统
格式化之前需要删除各个节点的原hadoop.tmp.dir文件夹下的所有文件,否则格式化会报错!一定要删除!
$ sudo rm -rf /tmp/*
格式化命令:最好在dog1上进行。如果配置成高可用,参考该博客。
$ hdfs namenode -format
14、启动集群
$start-all.sh
或
$ start-dfs.sh
$ start-yarn.sh
注意 :
如果遇到了这个问题:dog1: /home/betty/soft/hadoop-2.7.3/sbin/hadoop-daemon.sh: line 165: /tmp/hadoop-betty-namenode.pid: Permission denied
解决办法:$sudo chmod 777 /tmp
15、查看进程
$ jps
查看三台虚拟主机的hadoop相关进程
[betty@dog1 hadoop]$ jps --------------------dog1五个进程
10210 Jps
9698 SecondaryNameNode
9864 ResourceManager
7471 DataNode
9497 NameNode
[betty@dog2 hadoop]$ jps --------------------dog2三个进程
8071 NodeManager
8279 Jps
7961 DataNode
[betty@dog3 hadoop]$ jps --------------------dog3三个进程
5266 NodeManager
5155 DataNode
5444 Jps
16、web访问网页
192.168.233.110:50070
192.168.233.110:8088
都出现两个活跃节点,就完全配置成功
17、关闭集群
$ stop-all.sh 关闭所有主机