Hadoop完全分布式搭建步骤

请在搭建伪分布式的基础上搭建完全分布式

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

【             <!--默认文件系统的名称。一个URI的
                    方案和权限决定文件系统的实现。的
                    uri的方案确定config属性(fs. schema .impl)命名
                    文件系统实现类。uri的权限已经被使用
                    确定文件系统的主机、端口等。
                    指定主节点位置,提供一个对外的接口供其他程序使用
                    -->
                    <property>
                            <name>fs.defaultFS</name>
                            <value>hdfs://master:9000</value>
                    </property>
                    <property>
                        <!--其他临时目录的基础
                        hadoop系统临时目录(格式化后的namenode和datanode)
                        -->
                        <name>hadoop.tmp.dir</name>
                        <value>/home/betty/soft/tmp</value>
                    </property>】

配置hdfs-site.xml

【              <property>
                            <!--副本数-->
                            <name>dfs.replication</name>
                            <value>3</value>
                    </property>】

配置yarn-site.xml

     【          <property>
                            <name>yarn.nodemanager.aux-services</name>
                            <value>mapreduce_shuffle</value>
                    </property>
                    <property>
                        <!--指定resourcemanager所在主机-->
                            <name>yarn.resourcemanager.hostname</name>
                            <value>master</value>
                    </property>】

配置mapred-site.xml

此目录下没有该文件,我们需要将mapred-site.xml.template 复制一份,改成此名。

$ cp mapred-site.xml.template mapred-site.xml

然后再修改:

【<!--指定mr任务在哪个上面运行(本地、经典和yarn)-->
            <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
            </property>】

配置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    关闭所有主机 

猜你喜欢

转载自blog.csdn.net/Betty_betty_betty/article/details/84195936