完全分布式的安装

1、 集群规划  -> 不同的守护进程运行哪些

         角色分配:

组件

COM 1

COM 2

COM 3

HDFS

 Namenode

SecondaryNamenode

 -

Datanode

Datanode

Datanode

Yarn

-

-

RecourceManager

Nodemanager

Nodemanager

Nodemanager

Histrory

HistroryServer

-

-

 

 

2、基本环境准备

         2.1系统和软件【3台】

         CentOS6.5    hadoop 2.5.0(仅需在1台有即可)     jdk1.70—67

         2.2配置IP和DNS(root)

配置静态IP

           

DNS
                  //检查主机名
                  $cat /etc/sysconfig/network
 
                  //检查IP和DNS
                  $cat /etc/sysconfig/network-scripts/ifcfg-eth0
 
                  
                  //检查主机映射
                  $cat /etc/hosts   ->Linux
                  C:\Windows\System32\drivers\etc\hosts   ->Windows
 
                  2.3关闭防火墙 (3台) (root)                  
                  #service iptables stop
                  #chkconfig iptables off
 
                  检查:
                  $sudo service iptables status
                  会有提示iptables:Firewall is not running.
 
                  $sudo chkconfig --list | grep iptables
                  0:off         1:off         2:off         3:off         4:off         5:off         6:off
 
                  关闭Linux安全子系统
                  #vi /etc/sysconfig/selinux 
 
                  为了提交性能,可以考虑将启动方式调整为不带桌面
                  sudovim /etc/inittab
                  id:3:initdefault:
 
                  2.4创建相同普通用户名和密码 【3台】
                  #useradd hadoop
                  #echo 123456 | passwd --stdin hadoop
 
                  2.5配置主机映射   【三台都需要需要添加】
                  #vi /etc/hosts
192.168.159.101 com1.james
192.168.159.102 com2.james
192.168.159.103 com3.james
 
2.6卸载自带的jdk
                  # rpm -qa |grep jdk
# rpm -e --nodeps tzdata-java-2012j-1.el6.noarch
# rpm -e --nodepsjava-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64

                  配置Java环境变量

                  # vi/etc/profile

 

     

#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
                  
                  生效配置
                  source/etc/profile
 
                  检查Java环境变量
                  java -version
                  java version"1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
二、配置NTP服务
 
         *.把COM 1作为整个集群的时间同步服务器
         *.集群中所有其他服务器都来这台服务器COM1同步时间
 
         1.检查每台服务器所在的时区
        $ date -R
         Thu,23 Mar 2017 11:13:57 +0800
 
         如果不是+0800,如要通过如下命令调整
         #rm  -rf /etc/localtime        ---如果时区不是+0800
         #ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
 
         2.安装ntp服务
         #rpm -qa | grep ntp      --查看ntp软件包是否已安装
         ntp-4.2.6p5-1.el6.centos.x86_64
         ntpdate-4.2.6p5-1.el6.centos.x86_64
 
         #yum  -y install ntp     --如果没有那就需要安装ntp
 
         3.修改ntp的配置文件(COM 1)
         #vi /etc/ntp.conf
         去掉第18行的# 修改成自己的网段
         restrict192.168.7.0 mask 255.255.255.0 nomodify notrap
         注释掉以下几行(22行)
          #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
 
    CentsOS6.4 去掉注释第35 36行
    CentsOS6.5 去手动添加以下内容
server 127.127.1.0     #local clock
fudge 127.127.1.0  stratum 10
 
    4、同步服务器的时间(COM 1)
    # ntpdate cn.pool.ntp.org   -->操作这一步时关闭ntp服务
23 Mar 11:36:56 ntpdate[26856]: step timeserver 173.255.246.13 offset -12.240613 sec
    5、启动ntp服务(默认式开始)PC1 root用户操作
    # service ntpd start
    # chkconfig ntopd on
    $ sudo chkconfig --list | grep ntpd
 
    $ sudo ntpdate 202.120.2.101
 9Jun 15:27:49 ntpdate[2689]: the NTP socket is in use, exiting  //ntpd一旦开启就不能手动同步时间
         
         6、如果另外两台的ntp的进程开启,那么需要关闭
         #service ntpd stop
         #chkconfig ntpd off
 
 
         7.第2、3台向第一台同步时间
         #ntpdate hadoop.senior01
         16Feb 17:43:27 ntpdate[2554]: adjust time server 192.168.7.9 offset -0.001412 sec
 
         8.制定周期性时间同步计划任务(PC2、PC3定时向PC1手动同步时间)
         在PC2 PC3每10分钟同步一次时间
         #crontab -e
*/10 * * * * /usr/sbin/sudo /usr/sbin/ntpdatecom1.james
         
         [注意]:如果确实无法向第一台同步时间,请在交互窗口(可以同时设置3台时间)执行手动设置时间
         #date -s "11:48:00 2017/3/23"
 
三、配置SSH免密钥登录
         使用ssh登录的时候不需要用户名密码
         $sbin/start-dfs.sh
         
         $ssh-keygen   
         *  回车,生产当前主机的公钥和私钥
 
         //分发密钥(要向3台都发送)
         $ssh-copy-id com1.james
         $ssh-copy-id com2.james
         $ssh-copy-id com3.james 
 
         (COM 1~COM 3)
         $ssh-keygen
         $ssh-copy-id com1.james 
         $ssh-copy-id com2.james 
         $ssh-copy-id com3.james
 
分发完成之后会在用户主目录下.ssh目录生成以下文件
$ ls .ssh/
authorized_keys  id_rsa id_rsa.pub  known_hosts
 
测试失败,需要先删除.ssh目录,重做一遍
 
四、安装Hadoop
         1.下载上传到Linux并解压hadoop的.tar.gz
$ tar -zxf hadoop-2.5.0.tar.gz -C/opt/modules/
 
         2.删除${HADOOP_HOME}/share/doc
$ rm -rf doc/
 
         3.配置java环境支持在${HADOOP_HOME}/etc/hadoop
在hadoop-env.sh  mapred-env.sh   yarn-env.sh中配置
 
         exportJAVA_HOME=/opt/modules/jdk1.7.0_67
 
         4.配置slaves(集群中所有的主机)
com1.james
         com2.james
         com3.james
 
         5.=======core-site.xml===
         <!--指定第一台作为NameNode-->
<property>
       <name>fs.defaultFS</name>
       <value>hdfs://com1.james:8020</value>
   </property>
         
         
         <property>
                  <name>hadoop.tmp.dir</name>
                  <value>/opt/modules/hadoop-2.5.0/data</value>
         </property>
 
=============hdfs-site.xml==========
<!-- 分布式副本数设置为3 -->
         <property>
       <name>dfs.replication</name>
       <value>3</value>
   </property>
         
<!-- secondarynamenode主机名 -->
         <property>
       <name>dfs.namenode.secondary.http-address</name>
       <value> com2.james:50090 </value>
   </property>
 
<!-- namenode的web访问主机名:端口号 -->
   <property>
       <name>dfs.namenode.http-address</name>
       <value> com1.james:50070 </value>
         </property>
         
<!-- 关闭权限检查用户或用户组 -->
         <property>
       <name>dfs.permissions.enabled</name>
       <value>false</value>
   </property>
 
=================mapred-site.xml=======
<!--指定mapreducer向yarn提交-->
         <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
   </property>
         
         <property>
       <name>mapreduce.jobhistory.address</name>
       <value> com1.james:10020</value>
   </property>
         
         <property>
       <name>mapreduce.jobhistory.webapp.address</name>
       <value> com1.james:19888</value>
   </property>
 
================yarn-site.xml======
<!--指定哪个节点作为resourcemanager-->
<property>
       <name>yarn.resourcemanager.hostname</name>
       <value> com3.james </value>
   </property>
         
         <!--在mapreducer过程中启用shuffle-->
         <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
   </property>
         
         <!--启用日志聚合-->
         <property>
       <name>yarn.log-aggregation-enable</name>
       <value>true</value>
   </property>
         
         <!--日志保存时间-->
         <property>
       <name>yarn.log-aggregation.retain-seconds</name>
       <value>86400</value>
   </property>
   ===============================
 
   5.配置slaves
com1.james
         com2.james
         com3.james
【注意事项】:
1.slaves中配置集群中所有的主机名
2.所有节点上的配置文件内容都是一样的(联盟模式例外)
3.要按照集群规划配置所属进程
 
五、(COM 1)分发hadoop(已经配置好的)目录到其他两台(COM 2和COM 3)服务器上
scp -r COM 1的hadoop目录(带路径) COM 2:/要复制到的目录
 
$ scp -r /opt/modules/hadoop-2.5.0/ com2.james:/opt/modules/
 
 $scp -r /opt/modules/hadoop-2.5.0/ com3.james:/opt/modules/
 
 六、格式化Namenode
 在COM 1上的${HADOOP_HOME}/bin
 $bin/hdfs namendoe -format
 
【注意】
1.先将COM 1的hadoop配置目录分发到COM 2和COM 3
2.保证3台上的配置内容一模一样
3.先确保将3台之前残留的data 和 logs删除掉
4.最后格式化
 
 
 
 
 七、启动进程
        在PC1上使用如下命令启动HDFS
        $ sbin/start-dfs.sh
 
        在PC3上使用如下命令启动YARN
        $ sbin/start-yarn.sh
 
        停止进程
        在PC1上使用如下命令停止HDFS
        $ sbin/stop-dfs.sh
 
        在PC3上使用如下命令停止YARN
        $ sbin/stop-yarn.sh

【注意】

修改任何配置文件,请先停止所有进程,然后重新启动