Hadoop笔记之六——Hadoop2.x 完全分布式搭建

1、准备服务器,并规划服务器角色

    3台 虚拟机Linux
    s-hadoop01.lele.com   4G 内存 40G (机子配置较差 1G) NameNode  ResourceManager   DataNode  NodeManager
    s-hadoop02.lele.com   2G 内存 40G (1G)               DataNode  SecondaryNameNode          NodeManager
    s-hadoop03.lele.com   2G 内存 40G (1G)               DataNode                             NodeManager


    
    生产环境:NameNode 单独一台服务器   ResourceManager与NameNode一般在同一台服务器
                SecondaryNameNode与NameNode一定要部署在不同的服务器上
                SecondaryNameNode的配置(内存)需要与NameNode保持一致
                
                DataNode与NodeManager同一台服务器


                
  2、安装环境准备  


    网络准备使用:            
                  (1)、检查受网络管理器管理的网络接口:  nmcli dev status或者nmcli connection show
                  (2)、卸载虚拟机自带网卡(也可以不卸载): 打开 vi /etc/sysconfig/network-scripts/ifcfg-eth33(每个机子都可能不一样,但格式会是“ifcfg-eth数字”),
                            把ONBOOT=no,改为ONBOOT=yes
                              修改/etc/yum/pluginconf.d/fastestmirror.conf中的enable,设置为0
                             sudo yum groupremove "Virtualization" 
                             sudo yum remove libvirt
                   (3)、自定义静态ip: vim /etc/sysconfig/network-scripts/ifcfg-ens33
                   内容模版:
                    TYPE="Ethernet"
                    BOOTPROTO="static"
                    IPADDR=192.168.1.126
                    GATEWAY=192.168.1.1
                    NETMASK=255.255.255.0
                    DNS1=192.168.1.1
                    NM_CONTROLLED=no
                    DEFROUTE="yes"
                    PEERDNS="yes"
                    PEERROUTES="yes"
                    IPV4_FAILURE_FATAL="no"
                    IPV6INIT="yes"
                    IPV6_AUTOCONF="yes"
                    IPV6_DEFROUTE="yes"
                    IPV6_PEERDNS="yes"
                    IPV6_PEERROUTES="yes"
                    IPV6_FAILURE_FATAL="no"
                    IPV6_ADDR_GEN_MODE="stable-privacy"
                    NAME="ens33"
                    //这个不能改UUID=66c93861-628b-48ca-a3cb-e50e7cddce0b
                    DEVICE=ens33
                    ONBOOT="yes"
                  (4)、重启网络服务  sudo systemctl restart network.service
                  (5)、修改dns: nmcli con mod UUID ipv4.dns "114.114.114.114 8.8.8.8"(将UUID改成自己的mac地址)
                  (6)、dns重生效:  nmcli con up UUID(UUID改称自己的mac地址)
    
    
    IP,主机名以及主机名与IP的映射关系
    
    $ ping s-hadoop01.lele.com
    
    JDK与JAVA_HOME环境变量
    javac -version
    查询自带的openjdk有哪些
    rpm -qa | grep java
    然后使用rpm -e --nodeps jdk名称来卸载
    配置环境变量:vim /etc/profile
        export JAVA_HOME=/opt/modules/jdk1.7.0_67
        export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        export PATH=$PATH:$JAVA_HOME/bin

    
    
    
    3)时间同步(重点)切换到root用户
    a.先选择其中一台作为ntp时间服务器
    s-hadoop01.lele.com 
    安装ntpd服务
    # yum -y install ntp
    
    开启ntpd服务
    # service ntpd start
    # chkconfig ntpd on
    # chkconfig ntpd --list | grep ntpd
    
    修改/etc/ntp.conf配置文件
        1) 去掉restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap注释,同时修改IP与你的主机IP在同一网段
        2)注释掉外部ntp时间服务器
            ##server 0.centos.pool.ntp.org iburst
            ##server 1.centos.pool.ntp.org iburst
            ##server 2.centos.pool.ntp.org iburst
            ##server 3.centos.pool.ntp.org iburst
            
        3)    添加一下两行内容
            server 127.127.1.0 # local clock
            fudge 127.127.1.0 stratum 10

    # service ntpd restart
    
    验证:
        在其他服务器上通过ntpdate命令来进行时间同步
        ntpdate -u ip/主机名
        
        同步时,看下防火墙设置
        关闭ntp服务器的防火墙
        # systemctl stop firewalld.service
        禁止防火墙开机启动 
        systemctl disable firewalld.service
        在另外一台上进行同步时间
        # ntpdate -u s-hadoop01.lele.com
    
        29 May 09:48:18 ntpdate[1377]: adjust time server 192.168.199.144 offset 0.000066 sec
        
    
        让BIOS时钟时间与系统时间进行同步(所有服务器上)
        # hwclock --localtime
        
        # hwclock --localtime -w
        修改配置文件
        # vim /etc/sysconfig/ntpd
        在首行添加————设置是否允许BIOS与系统时间进行同步。
        SYNC_HWCLOCK=yes
        
    b.其他服务器与这台ntp时间服务器进行时间同步
    通过crontab定时任务进行
    每10分钟进行时间同步
    0-59/10 * * * *  /usr/sbin/ntpdate -u s-hadoop01.lele.com
    
    4)防火墙关闭
    systemctl stop firewalld.service
     # systemctl disable httpd.service
     # systemctl list-units --type=service | grep firewalld


     
3、hadoop完全分布式安装

    将hadoop文件夹改成普通用户:    sudo chown -R brifeng:lele hadoop

    先在其中一台服务器上进行解压安装,并修改好配置,然后通过scp分发到其他服务器上
    
    前提:要求所有服务器上的用户名、密码,以及目录保持一致
    
    /opt/modules/hadoop 
    安装目录
    
    解压安装
    
    修改配置文件
    
    http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/ClusterSetup.html
    
    
    1) hadoop-env.sh
    export JAVA_HOME=/opt/modules/jdk1.7.0_67

    export HADOOP_CONF_DIR=/opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop

    

    2)core-site.xml
    //@前面是用户名,后面是ip地址或者主机名
    //修改的时候要注意ip地址和主机名都要注明,否则连接的就是root用户。。
    //以上纯属扯淡
        <property>
  <name>fs.defaultFS</name>
  <value>hdfs://hadoop.lele.org:8020</value>
  <description>The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.</description>
</property>
        <property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/modules/hadoop-2.5.0-cdh5.3.6/tmp/data/</value>
  <description>A base for other temporary directories.</description>
</property>
    
    3)hdfs-site.xml
    
        secondaryNamenode  http https
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>hadoop.lele.org03:50090</value>
  <description>
    The secondary namenode http server address and port.
  </description>
</property>

<property>
  <name>dfs.namenode.secondary.https-address</name>
  <value>hadoop.lele.org03:50091</value>
  <description>
    The secondary namenode HTTPS server address and port.
  </description>
</property>

    
    4) mapred-site.xml
    
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
  <description>The runtime framework for executing MapReduce jobs.
  Can be one of local, classic or yarn.
  </description>
</property>

    
    5) yarn-site.xml
    
<property>
    <description>The hostname of the RM.</description>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop.lele.org02</value>
  </property>
          <property>
    <description>the valid service name should only contain a-zA-Z0-9_ and can not start with numbers</description>
    <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
 </property>
  
  
    6)slaves masters
    $ vim slaves
    配置datanode
    namenode@namenode
    secondarynamenode@snamenode
    datanode@datanode
    $ vim masters
    配置secondaryNamenode
    secondarynamenode@snamenode

    7)scp分发
    $ rm -rf doc/ 
    
    $ scp -r hadoop-2.5.0/ [email protected]:/opt/modules/hadoop/
    $ scp -r hadoop-2.5.0/ [email protected]:/opt/modules/hadoop/
    
    8)ssh免密码登录设置(针对具体用户起作用)
    
        1) 在各服务器生成公钥、私钥文件
        
        2)分发公钥文件给对方
        1)$ ssh-keygen
        在用户的home的.ssh目录下生成公钥、私钥文件
        id_rsa  id_rsa.pub
        2)把公钥文件传给对方,并且在对方机器上将公钥文件追写到authorized_keys
        免密码登录到本机
        $ ssh-copy-id -i localhost
        $ssh localhost
        $ exit
        
        ssh 免密码登录到其他服务器
        $ ssh-copy-id -i s-hadoop01.lele.com
        $ ssh-copy-id -i s-hadoop02.lele.com
        $ ssh-copy-id -i s-hadoop03.lele.com
        
        
    9)启动集群
    
        格式化NameNode

        $ bin/hdfs namenode -format

         Storage directory /opt/modules/hadoop/hadoop-2.5.0/tmp/data/dfs/name has been successfully formatted.(namenode元数据存放目录)
    
        启动集群
            1)启动hdfs
            在NameNode所在的节点上执行
            sbin/start-dfs.sh
            NameNode  ---> DataNode ---> SecondaryNameNode
            
            2)启动YARN
            在ResourceManager所在的节点上执行
            sbin/start-yarn.sh
            
            ResourceManager ---> NodeManager
            
        停止:
            1)停止HDFS
        在NameNode所在的节点上执行
        $ sbin/stop-dfs.sh
        
        2)停止YARN
        在ResourceManager节点上执行
        $ ./stop-yarn.sh
        


    4、通过web页面访问
    

    

    知识点补充:
        1、查看端口:sudo lsof -i:50070 -P
            会输出内容,找到PID,然后根据PID杀掉进程
          kill掉端口:sudo kill -9 PID

猜你喜欢

转载自blog.csdn.net/qq_35946969/article/details/83653698
今日推荐