03.Haoop 全分布式搭建步骤

在搭建的过程中一定要记得做一些快照,这样方便回滚。否则搭建错的时候就要从来来过,特别麻烦!

我主要用  1台 windows 电脑 和 1台 mac 电脑 共同搭建网络。

这里节点数一般 设置4个就行,1个  作为Namenode, 3个作为Datanode 就够了。

hostnamectl set-hostname node01  用来修改 虚拟机的名字,记得 reboot 重启。

1.网络设置问题

    Windows 上 VMWARE + CENTOS 7 使用 Bridge 桥接的方式 设置网络。

    可参考上一篇 02.Haoop 虚拟机 桥接与NAT之间区别 及桥接设置  。

    简单回顾一下,设置的几个命令

     1)设置 ip 地址等

          vi  /etc/sysconfig/network-scripts/ifcfg-ens33

          也可能是 ifcfg-eth0, 不放心的话可以 到 network-scripts 里面去看一下,一般是第一个文件

      

     2) 设置 网络的名称 hostname,这样相互 ping 就可以用名称来 ping

            vi  /etc/sysconfig/network

            注意取名字的时候最好不要有 " _ ", 比如 node_01 ,最好取成 node01 否则可能 Hadoop  运行不起来。

           GATEWAY 的话可写可不写,这里我把最后2位 隐去了。

            

     3 )要让 每个节点(虚拟机)都知道其他节点的名称

            vi  /etc/hosts  把每个节点的 IP地址 和 名称 追加在后面。

            在 ::1 这里输入 o (欧),就可以直接换行插入。

            

   4)设置完之后需要启动一下。

      service network restart 

      也建议 poweroff 一下,再重新开启,因为这样 hostname 就会变换

       最后打开之后 互相ping 一下,以及看一下 hostname 节点的名字是否已经变成自己设置的了。

       我用xshell, 打开了 检查了几个地方用红色标出来了。

      a. 名字是否已经变为nodewind04 

      b.ping  www.baidu.com  是否可以连通百度

      c. ping nodewind05 是否可以连通 其他节点,并且用其他节点的名字来ping 通

      d. 阿里云的服务器也顺便检查了一下是否可以ping 通

      

   5) 检查是否关闭防火墙

    CentOS 6.0 使用 iptables:

    a.   关闭防火墙 sevice iptables stop  

    b.   设置开机不启动防火墙 chkconfig iptables off

CentOS 7.0 使用 firewall: 

   a.      systemctl start firewalld.service    #启动firewall

   b.      systemctl stop firewalld.service   #停止firewall

   c.      systemctl disable firewalld.service   #禁止firewall开机启动

   6)检查是否关闭安全模式

    vi  /etc/selinux/config  设置 SELINUX=disabled

 到这里网络设置就基本做完了,记得每个节点都需要把这些网络设置都完成。记得定期的做一下快照!

 

2. ssh 设置免密登入

     免密登入主要是 Hadoop Namenode 可以无需密码访问各个节点。

     在这里我选择了 Hadoop官网的 id_rsa.pub 的密钥。

     1) ssh localhost  先用 ssh 进入 localhost 此时需要密码,用 ll -a 就可以看到隐藏文件 .ssh 文件

     2) 需要在 ssh 中生存公钥,以及 把 公钥放入 authorized_keys 中,

         a.    ssh localhost   进入 ssh

         b.    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa   生存公钥

         c.    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys   把公钥追加到 authorized_keys 中去

         d.    chmod 0600 ~/.ssh/authorized_keys     如果权限有问题,需要修改权限。如果没有问题可以不用这句

         e.    exit  退出,再试一次 ssh localhost 是否可以免密进入

         f.     把 Namenode 的公钥分发给 其他的节点,

                在cd .ssh 目录下 scp id_rsa.pub nodewind05:`pwd`/nodewind04.pub     

                注意 nodewind04,nodewind05 都要先登入 ssh localhost,然后再输入scp 命令!!!

                即把nodewind04 上的 id_rsa 公钥 发送到 nodewind05 上,并且改名为 nodewind04.pub

         g.   在 nodewind05 上检查一下是否有 nodewind04.pub 文件,也需要追加一下 authorized_keys

               cat nodewind04.pub >> authorized_keys

         h.   在nodewind04 节点上,exit 退出localhost之后,ssh nodewind05

         图片版说明:

     

  •    ssh localhost 
  •    ll -a
  •    a,b 的指令,生成公钥:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

    

  •     c 的指令,追加到 authorized_keys 中 :cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

   

  •    指令 cd .ssh 里查看 是否 公钥和文件是否已经生成

    

  •  发送 nodewind04 的公钥 到 nodewind05:
  • nodewind04 和 nodewind05 都先 ssh localhost , 进入 cd .ssh
  • 在 nodewind04 中发送公钥  scp id_rsa.pub nodewind05:`pwd`/nodewind04.pub     
  • 在 nodewind05 中查看 是否有 nodewind04.pub   
  • 在 nodewind05 中, 把公钥追同样也追加到 authorized_keys中去:cat nodewind04.pub >> authorized_keys

  •   在 nodewind04节点 ,先退出nodewind04,再登入 ssh nodewind05 ,此时应该是免密登入。

  

  • 最后每个 节点都需要用 做免密登入

 

3. 每个节点需要统一时间

       在每个节点上设置

       1)sudo  yum install ntp

       2) systemctl enable ntpd:

       3) 修改启动参数,允许ntp服务在系统时间误差较大时也能正常工作

             vi /etc/sysconfig/ntpd   设置 OPTIONS= "-g -x"

       4)重新启动服务

            service ntpd restart

       5)将系统时间改为上海时间

            ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

       6)查看时间  date

       

 

4. xshell 上传文件的设置

       在每个节点上设置

       1) yum -y install lrzsz

       2) rpm -qa lrzsz

       3) 使用 rz  -y 命令上传文件,自动跳出上传窗口

       4) 创建目录 mkdir software  (自定义的名称)以后的压缩包就放在这个里面

      

 

5.JDK 和 HADOOP 安装包 & 环境变量的设置

       1) 选择一个节点作为 Namenode(主节点),这里我用的是 nodewind04 作为 Namenode。

       2)官网下载  hadoop-2.7.6.tar.gz  和  jdk-8u211-linux-x64.tar.gz  并使用 rz  -y 命令上传

             JDK 尽量选择 8.0的版本,Hadoop 也尽量选择 3.0之前的版本。

       3)解压缩命令 tar -zxvf jdk-8u211-linux-x64.tar.gz  和 tar -zxvf hadoop-2.7.6.tar.gz

           分别进入文件夹,输入 pwd 命令,看当前路径,记录一下路径: 

         (JDK)        /root/software/jdk1.8.0_211

        (Hadoop)   /root/software/hadoop-2.7.6

       4)配置环境变量   vi +  /etc/profile      “+” 号代表在文件的末尾添加。

             export JAVA_HOME=/root/software/jdk1.8.0_211

             export HADOOP_HOME=/root/software/hadoop-2.7.6

             PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

             在末尾输入以上3句话。JDK 和 HADOOP 和绝对路径,

              bin 和 sbin 都是系统的一些启动文件,开启时要用到,所以需要添加到 PATH里。

        5)需要启动一下修改的文件 source /etc/profile

  • 是否配置完成 JDK 环境变量: 输入  jps ,有返回值就说明完成,

                                                        或是 echo $JAVA_HOME  看是否路径设置一致

  • 是否配置完成 HADOOP 环境变量:输入 hadoop version 查看是否安装,

                                                               或是 echo $HADOOP_HOME  看是否路径设置一致

        6)  把主节点的 JDK 先发到其他的节点上:

             a.    JDK安装包分发,发送到同一个目录下: scp -r /root/software/jdk1.8.0_211 nodewind05:/root/software/

             b.    /etc/profile,也发送到同一个目录下:scp /etc/profile nodewind05:/etc/   

                                                                               这里不能用pwd,不在root下面,冒号后面不要与空格

             c.    在nodewind05 中 source /etc/profile , jps, echo $JAVA_HOME

                    -r 代表复制整个目录,单复制一个文件就不要加 -r。

                    HADOOP 的文件还需要继续做一些设置,等设置完成之后再分发。

                   可以先做个快照,HADOOP的设置容易出错。

 

5.HADOOP 全分布式设置

    1)在 HADOOP 中 设置 JAVA 环境变量

         a.    打印 JAVA 路径 echo $JAVA_HOME   结果为:/root/software/jdk1.8.0_211

         b.    进入 cd hadoop-2.7.6/etc/hadoop/  , 修改 3 个文件:vi hadoop-env.sh, vi mapred-env.sh, vi yarn-env.sh

                把 export JAVA_HOME 路径改成 绝对路径: /root/software/jdk1.8.0_211 , 3个文件中各有1行需要修改。

         c.    vi core-site.xml   修改  core-site.xml 文件,就是要修改主节点 Namenode 的参数。

                也都是在 cd hadoop-2.7.6/etc/hadoop/ 中。

              <configuration>
                    <property>
                             <name>fs.defaultFS</name>
                             <value>hdfs://nodewind04:9000</value>
                   </property>
                   <property>
                            <name>hadoop.tmp.dir</name>
                            <value>/var/hadoop/full</value>
                  </property>
             </configuration>

             *设置 主节点的 url, nodewind04 相当于是 url 路径。       

             *固定 hadoop 运行时产生文件的储存目录 

         d.    vi hdfs-site.xml  , 修改 hdfs 文件,主要是 修改 备份的数量 和  Secondary Namenode 的地址与主节点分开

              <configuration>
                     <property>
                            <name>dfs.replication</name>
                            <value>2</value>
                   </property>
                   <property>
                          <name>dfs.namenode.secondary.http-address</name>
                          <value>nodewind05:50090</value>
                  </property>
             </configuration> 
     

              *这里我只对每个文件 复制2份,一般为 3 份

              *Secondary Namenode 我放在了 nodewind05 节点上。   

         e.    vi slaves  , 告诉 节点,哪些是 slaves (datanode)

                把 localhost 去除,输入 nodewind05, nodewind06 ...    只要写 节点的 HOSTNAME就行

                别把 nodewind04 (Namenode)写进去 

         f.    Hadoop 文件初步修改完成。把 Namenode 中的 hadoop 文件分发到各个节点上去。

                scp -r /root/software/hadoop-2.7.6 nodewind05:/root/software/    也是发送到 software文件夹中   

图片说明:

  • 修改 vi hadoop-env.sh, vi mapred-env.sh, vi yarn-env.sh

  • 修改 vi core-site.xml 

  • 修改 vi hdfs-site.xml 

  • 修改 vi slaves

 

6.主节点(Namenode)格式化及启动

1)    输入指令: hdfs namenode -format    , 注意 在主节点上输入,我这里是 nodewind04

2)    输入指令:start-dfs.sh

      图片如下:

  •   输入 hdfs namenode -format  ,看是否 successfully formatted, 以及运行文件存放的路径是否正确。

  •   输入 start-dfs.sh , 看 Namenode, Datanode, Secondary Namenode 是否启动。 

  • 在每个节点 输入 jps , 查看进程,看 该节点的 node 是否被启动。

         nodewind05 上有 1个 SecondaryNameNode 和 1个 DataNode

  • 最后用 Namenode 的 ip 地址 访问网页版的 Hadoop

       http://ip地址:50070

 

到此全分布式就搭载完成啦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值