zoukankan      html  css  js  c++  java
  • hadoop搭建完全分布式集群

    1. 新建虚拟机
    2. 修改虚拟机的静态IP
    3. 修改主机名,添加主机和ip的映射关系
    4. 关闭防火墙 (1-4 通过脚本完成)
    5. 创建jinghang用户
      useradd jinghang
      passwd jinghang

    6. 配置jinghang用户具有root权限
      vim /etc/sudoers
        在91行下添加如下内容:
        jinghang ALL=(ALL) NOPASSWD:ALL

      完成后:wq!

    7.在/opt目录下创建文件夹(software存放软件包,modul存放解压后的软件包
      (1)在/opt目录下创建module、software文件夹
          mkdir /opt/module /opt/software
      (2) 修改module、software文件夹所有者和所属组
        chown jinghang:jinghang /opt/module /opt/software

    8、关机拍摄快照

    9、从拍照位置克隆三台虚拟机

    10、克隆虚拟机有两个网卡(三台都需要改):

      进入这个文件 vim /etc/udev/rules.d/70-persistent-net.rules
        1.删除 NAME="eth0"这一行
        2.修改NAME="eth1" -> NAME="eth0" (:wq!)
        3.复制ADDR地址(虚拟mac地址)
        4.进入到
          vim /etc/sysconfig/network-scripts/ifcfg-eth0
          HWADDR=赋值ADDR地址(虚拟mac地址)
          :wq!
        5.service network restart (如果失败,reboot)

    11、修改克隆后虚拟机的ip和主机名、ip主机的映射关系(使用脚本完成)

    12、确定任务 

      HDFS: namenode datanode secondarynamenode
      YARN:resourcemanager nodemanager
      历史服务: historyserver

      master(主节点)       slaves(从节点)

        hadoop集群默认3个副本,3台服务器

          Hadoop03     Hadoop04     Hadoop05
          datanode       datanode       datanode
          namenode    resourcemanager    secondarynamenode
          nodemanager    nodemanager    nodemanager
          historyserver


    13、编辑/etc/profile来配置环境

      [jinghang@Hadoop02 hadoop-2.7.2]$ sudo vim /etc/profile
        #配置JAVA_HOME
        export JAVA_HOME=/opt/module/jdk1.8.0_144
        export PATH=$PATH:$JAVA_HOME/bin

        #配置HADOOP_HOME
        export HADOOP_HOME=/opt/module/hadoop-2.7.2
        export PATH=$PATH:$HADOOP_HOME/bin
        export PATH=$PATH:$HADOOP_HOME/sbin

      添加完环境source一下:
        [jinghang@Hadoop02 hadoop-2.7.2]$ source /etc/profile

    14、查看环境是否配置成功

      [jinghang@Hadoop02 hadoop-2.7.2]$ hadoop version
      [jinghang@Hadoop02 hadoop-2.7.2]$ java -version
      如果java不是1.8.0_144版本
        卸载之前的版本
          rpm -qa | grep java  (查看java安装包)
          sudo rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64      (卸载jdk安装包)
          sudo rpm -e java-1.7.0-openjdk-1.7.0.181-2.6.14.10.el6.x86_64 --nodeps  (忽略依赖卸载jdk安装包)

    15、配置集群 

      1、在hadoop-2.7.2目录下
        vim etc/hadoop/hadoop-env.sh
          修改JAVA_HOME路径 export JAVA_HOME=/opt/module/jdk1.8.0_144
        vim etc/hadoop/yarn-env.sh
          修改JAVA_HOME路径 export JAVA_HOME=/opt/module/jdk1.8.0_144
        vim etc/hadoop/mapred-env.sh
          修改JAVA_HOME路径 export JAVA_HOME=/opt/module/jdk1.8.0_144

      2、配置HDFS
        在hadoop-2.7.2目录下:
        vim etc/hadoop/core-site.xml
        添加设置
          <!-- 指定HDFS中NameNode的地址 -->
          <property>
            <name>fs.defaultFS</name>
            <value>hdfs://Hadoop03:9000</value>
          </property>

          <!-- 指定Hadoop运行时产生文件的存储目录 -->
          <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-2.7.2/data/tmp</value>
          </property>

        在hadoop-2.7.2目录下:
        vim etc/hadoop/hdfs-site.xml
        添加配置
          <!-- 指定HDFS副本的数量 -->
          <property>
            <name>dfs.replication</name>
            <value>3</value>
          </property>

          <!-- 指定Hadoop辅助名称节点主机配置 -->
          <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>Hadoop05:50090</value>
          </property>

      3、配置YARN:
        在hadoop-2.7.2目录下:
        vim etc/hadoop/yarn-site.xml
        添加配置
          <!-- Reducer获取数据的方式 -->
          <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
          </property>

          <!-- 指定YARN的ResourceManager的地址 -->
          <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>Hadoop04</value>
          </property>

          <!-- 日志聚集功能使能 -->
          <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
          </property>
          <!-- 日志保留时间设置7天 -->
          <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>604800</value>
          </property>


        4、在hadoop-2.7.2目录下
          重命名mapred-site.xml.template:mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
          然后编辑: vim etc/hadoop/mapred-site.xml
          添加配置:
            <!-- 指定MapReduce运行在YARN上 -->
            <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
            </property>

            <!-- 历史服务器端地址 -->
            <property>
              <name>mapreduce.jobhistory.address</name>
              <value>Hadoop03:10020</value>
            </property>
            <!-- 历史服务器web端地址 -->
            <property>
              <name>mapreduce.jobhistory.webapp.address</name>
              <value>Hadoop03:19888</value>
            </property>

    16、分发

      这时一台服务器已经配置完成,将配置分发到其他的服务器上。
        1、将Hadoop03服务器的hadoop-2.7.2分发给Hadoop04服务器
          rsync -av /opt/module/hadoop-2.7.2 jinghang@Hadoop04:/opt/module/
        2、将Hadoop03服务器的hadoop-2.7.2分发给Hadoop05服务器
          rsync -av /opt/module/hadoop-2.7.2 jinghang@Hadoop05:/opt/module/
        3、将Hadoop03服务器的 jdk1.8.0_144 分发给Hadoop04服务器
          rsync -av /opt/module/ jdk1.8.0_144 jinghang@Hadoop04:/opt/module/
        4、将Hadoop03服务器的 jdk1.8.0_144 分发给Hadoop05服务器
          rsync -av /opt/module/ jdk1.8.0_144 jinghang@Hadoop05:/opt/module/
        5、将Hadoop03服务器的 /etc/profile 分发给Hadoop04服务器的root用户
          rsync -av /etc/profile root@Hadoop04:/etc/profile
        在Hadoop04服务器上 source /etc/profile
        6、将Hadoop03服务器的/etc/hosts分发给Hadoop04服务器的root用户
          rsync -av /etc/hosts root@Hadoop04:/etc/hosts
        7、分发完毕,检查三台服务器的java版本和hadoop版本

    17、启动集群(在集群的各台服务器上启动对应的服务进程) 

      1、启动集群之前一定要格式化(/opt/module/hadoop-2.7.2)
        bin/hdfs namenode -format ( has been successfully formatted)
        如果格式化失败了:
          1.删除/opt/module/hadoop-2.7.2目录下的data logs
          2.bin/hdfs namenode --format
        注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。

      2 启动HDFS服务
        启动namenode
          sbin/hadoop-daemon.sh start/stop namenode
        启动datanode
          sbin/hadoop-daemon.sh start/stop datanode
        启动secondarynamenode

        检查namenode的web页面是否可以访问
          http://192.168.232.202:50070


      3 启动YARN服务
        启动resourcemanager
          sbin/yarn-daemon.sh start/stop resourcemanager
        启动nodemanager
          sbin/yarn-daemon.sh start/stop nodemanager
        检查yarn的web页面:http://192.168.232.201:8088
      4 开启历史服务
        sbin/mr-jobhistory-daemon.sh start/stop historyserver

    18、配置免密登录,实现群起群停

      1、生成公钥和私钥
        ssh-keygen -t rsa
      2、分发公钥秘钥
        rsync -av /home/jinghang/.ssh jinghang@Hadoop04:/home/jinghang/
        rsync -av /home/jinghang/.ssh jinghang@Hadoop05:/home/jinghang/

      3、在namenode所在的服务器的hadoop-2.7.2目录下
        编辑 etc/hadoop/slaves
          删掉其他,添加
          Hadoop03
          Hadoop04
          Hadoop05

      4、将slaves文件分发给 运行resourcemanager的服务器
        rsync -av slaves jinghang@Hadoop04:/opt/module/hadoop-2.7.2/etc/hadoop/

      5、现在可以群起群停了
        1、在配置namenode的服务器(03)
          start-dfs.sh stop-dfs.sh
        2、在配置resourcemanager的服务器(04)
          start-yarn.sh stop-yarn.sh

          start-all.sh stop-all.sh

    19、配置集群时间同步 

      检查ntp是否安装
        rpm -qa|grep ntp
      查看ntp的状态:切记正在运行的状态是不可以的,需要先停止,不然端口会被占用
        [jinghang@Hadoop03 ~]$ service ntpd status

      如果ntp服务开着,要先关闭ntpd服务
        关闭
          [jinghang@Hadoop03 ~]$ service ntpd stop
        关闭开机自启
          [jinghang@Hadoop03 ~]$ sudo chkconfig ntpd off

      修改 /etc/ntp.conf 配置文件
        进入编辑:
          [jinghang@Hadoop03 ~]$ sudo vim /etc/ntp.conf
        修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)
          解开注释restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
        修改2(集群在局域网中,不使用其他互联网上的时间)
          加上注释
            #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
          fudge 127.127.1.0 stratum 10

      修改/etc/sysconfig/ntpd 文件
        进入编辑:
          [jinghang@Hadoop03 ~]$ sudo vim /etc/sysconfig/ntpd
        增加内容如下(让硬件时间与系统时间一起同步)
          SYNC_HWCLOCK=yes

      重新启动ntpd服务
        [jinghang@Hadoop03 ~]$ sudo service ntpd start
      设置ntpd服务开机启动
        [jinghang@Hadoop03 ~]$ sudo chkconfig ntpd on

      其他服务器配置
        在其他机器配置10分钟与时间服务器同步一次
        root用户登录,编写定时任务:
          [root@Hadoop04 jinghang]# crontab -e
          */10 * * * * /usr/sbin/ntpdate Hadoop03


      现在修改任意的服务器时间,三台服务器10分钟后都可以实现同步时间
      如果没同步成功,开启一下另外两台服务器的ntpd服务
        service ntpd start
        chkconfig ntpd on

  • 相关阅读:
    jdbc preparedstatement 调用存储过程的问题
    httpclient 优化
    httpclient 4种关闭连接
    Cloudstack介绍(一)
    Docker registry私有仓库(七)
    Docker生产实践(六)
    python装饰器
    Docker镜像构建(五)
    python 生成器和迭代器介绍
    Docker数据管理(四)
  • 原文地址:https://www.cnblogs.com/si-137/p/13335847.html
Copyright © 2011-2022 走看看