hadoop2.7.2搭建完全分布式集群

  1. 新建虚拟机

  2. 修改虚拟机的静态IP

  3. 修改主机名,添加主机和ip的映射关系

  4. 关闭防火墙 (1-4 通过脚本完成)

  5. 创建普通用户
      useradd jinghang
      passwd jinghang

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

7.在/opt目录下创建文件夹(software存放压缩软件包,modul存放解压后的软件包)

  • 在/opt目录下创建module、software文件夹

     		mkdir /opt/module /opt/software
    
  • 修改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
     history: 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、配置集群

  • 在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
    

  • 配置HDFS,在hadoop-2.7.2目录下:
vim etc/hadoop/core-site.xml
添加设置 

<! -- 指定HDFS中NameNode的地址 -->
	<property>
 		<name>fs.defaultFSname>
 		<value>hdfs://Hadoop03:9000value> 
	property>
<! -- 指定Hadoop运行时产生文件的存储目录 -->
	<property>
		<name>hadoop.tmp.dirname>
 		<value>/opt/module/hadoop-2.7.2/data/tmpvalue>
 	property>
vim etc/hadoop/hdfs-site.xml
添加配置

< !-- 指定HDFS副本的数量 -->
	<property>
		<name>dfs.replicationname>
		<value>3value>
	property>
< !-- 指定Hadoop辅助名称节点主机配置 -->
	<property>
		<name>dfs.namenode.secondary.http-addressname>
		<value>Hadoop05:50090value>
	property>

  • 配置YARN,在hadoop-2.7.2目录下:
vim etc/hadoop/yarn-site.xml 
 添加配置 


      <property>
        <name>yarn.nodemanager.aux-servicesname>
        <value>mapreduce_shufflevalue>
      property>

      
      <property>
        <name>yarn.resourcemanager.hostnamename>
        <value>Hadoop04value>
      property>

      
      <property>
        <name>yarn.log-aggregation-enablename>
        <value>truevalue>
      property>
      
      <property>
        <name>yarn.log-aggregation.retain-secondsname>
        <value>604800value>
      property>

  • 在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 
添加配置:
	
 
        <property>
          <name>mapreduce.framework.namename>
          <value>yarnvalue>
        property>

        
        <property>
          <name>mapreduce.jobhistory.addressname>
          <value>Hadoop03:10020value>
        property>
        
        <property>
          <name>mapreduce.jobhistory.webapp.addressname>
          <value>Hadoop03:19888value>
        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

你可能感兴趣的:(Hadoop,hadoop)