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

        linux01               linux02              linux03    

HDFS      Namenode          SecondaryNamenode       Datanode
        Datanode          Datanode                

Yarn    Nodemanager        Nodemanager           Nodemanager
                                                                                                             RecourceManager

Histrory  HistroryServer                                

一、基本环境准备

CentOS 6.5    hadoop 2.7.6      jdk1.8

1 配置IP和DNS 映射 主机名

//检查主机名
$ cat /etc/sysconfig/network

//检查IP 和DNS 网关 配置静态IP
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0

//检查主机映射
$ cat /etc/hosts   ->Linux
C:\Windows\System32\drivers\etc\hosts   ->Windows

2 关闭防火墙及安全子系统

# service iptables stop
# chkconfig iptables off

检查:
# service iptables status
会有提示iptables: Firewall is not running.

# chkconfig --list | grep iptables
0:off    1:off    2:off    3:off    4:off    5:off    6:off

关闭Linux安全子系统
# vi /etc/sysconfig/selinux 

为了提高性能,可以考虑将启动方式调整为不带桌面
sudo vi /etc/inittab
id:3:initdefault:

3 创建普通用户名并密码, 配置sudo权限

1 查看是否存在用户普通用户,没有就创建,稍后要保证3台帐号密码相同

# useradd hadoop
# passwd hadoop         或 # echo 123456 | passwd --stdin hadoop

2 配置hadoop的sudo权限

4 安装jdk

1 卸载自带jdk

# rpm -qa | grep jdk
# rpm -e --nodeps java-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

2 在/opt下创建并修改权限

modules/
software/
#  mkdir /opt/modules /opt/software
# chmod -R 777 modules/ software/

3 安装jdk

解压jdk到modules
# tar -zxvf /home/hadoop/jdk-7u67-linux-x64.tar.gz -C  /opt/modules/
配置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

5 系统和软件【3台】如果时克隆出来的需要执行

# vi /etc/udev/rules.d/70-persistent-net.rules
删除克隆来的信息(也就是eth0)
并把eth1改为eth0


# vi /etc/sysconfig/network-scripts/ifcfg-eth0 
删除UUID
修改HWADDR=当前的mac地址(与70-persistent-net.rules的mac地址相同)

修改IPADDR为对应的ip

6 配置主机映射 【三台都需要需要添加】

# vi /etc/hosts
     192.168.239.211 bigdata01.hadoop.com

192.168.239.212 bigdata02.hadoop.com
192.168.239.213 bigdata03.hadoop.com

7.修改主机名

修改每台主机的主机名为对应的名字
重启

8.windows的映射 (C:\Windows\System32\drivers\etc\hosts)

192.168.239.211 bigdata01.hadoop.com
192.168.239.212 bigdata02.hadoop.com
192.168.239.213 bigdata03.hadoop.com

## 二、配置NTP服务

*.把linux01作为整个集群的时间同步服务器
*.集群中所有其他服务器都来这台服务器linux01同步时间

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的配置文件(linux01.bigdata.com为第一台服务器的主机名,修改第一台)

# vi /etc/ntp.conf
去掉第18行的# 修改成自己的网段
restrict 192.168.239.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 36行去手动添加以下内容
    server 127.127.1.0     #local clock
    fudge 127.127.1.0  stratum 10

4、同步服务器的时间(bigdata01.hadoop.com)

# ntpdate 202.108.6.95  #操作这一步时关闭ntp服务
   23 Mar 11:36:56 ntpdate[26856]: step time server 173.255.246.13 offset -12.240613 sec

5、启动ntp服务(默认式开始)PC1 root用户操作(bigdata01.hadoop.com)

 # service ntpd start
 # chkconfig ntpd on
 # chkconfig --list | grep ntpd
 ntpd            0:off   1:off   2:on    3:on    4:on    启动状态就可以了
 # ntpdate 202.120.2.101  #测试
9 Jun 15:27:49 ntpdate[2689]: the NTP socket is in use, exiting      
    #表示服务器1 作为时间服务器,同步时间不可用
    #ntpd一旦开启就不能手动同步时间

6、如果另外两台的ntp的进程开启,那么需要关闭(对其他两台进行操作)

# service --status-all | grep ntpd  查看ntpd服务是否开启
# chkconfig --list | grep ntpd        查看ntpd服务是否随开机启动

#如果服务可能开启  执行以下命令
# service ntpd stop
# chkconfig ntpd off

7.第2、3台向第一台同步时间

# ntpdate bigdata01.hadoop.com
18 Jan 23:01:34 ntpdate[2304]: step time server 192.168.239.211 offset -28768.643767 sec

8.制定周期性时间同步计划任务(PC2、PC3定时向PC1手动同步时间)

在PC2 PC3每10分钟同步一次时间
# crontab -e
*/10 * * * * /usr/sbin/ntpdate  bigdata01.hadoop.com

[注意]:如果确实无法向第一台同步时间,请在交互窗口(可以同时设置3台时间)执行手动设置时间

# date -s  '2017/08/29 15:34:30'

三、配置SSH免密钥登录

切换为普通用户hadoop 使用普通用户操作
使用ssh登录的时候不需要用户名密码  $ sbin/start-dfs.sh


每个节点操作
    $ ssh-keygen   
    *  一直回车,生产当前主机的公钥和私钥(~/.ssh)

    //分发密钥(要向3台都发送)
     $  ssh-copy-id bigdata01.hadoop.com
     $  ssh-copy-id bigdata02.hadoop.com
      $  ssh-copy-id bigdata03.hadoop.com

测试:

[hadoop@bigdata01 ~]$  ssh bigdata02.hadoop.com
测试失败,先删除.ssh目录,重做一遍
$ rm -r ~/.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中配置

JAVA_HOME=/opt/modules/jdk1.7.0_67

4. =======core-site.xml===

<!--  指定第一台作为NameNode  -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://bigdata01.hadoop.com:8020</value>
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/modules/hadoop-2.5.0/data</value>
</property>

5. ============hdfs-site.xml===========

<!-- 分布式副本数设置为3 -->
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<!-- secondarynamenode主机名 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>bigdata02.hadoop.com:50090</value>
</property>

<!-- namenode的web访问主机名:端口号 -->
<property>
    <name>dfs.namenode.http-address</name>
    <value>bigdata01.hadoop.com:50070</value>
</property>

<!-- 关闭权限检查用户或用户组 -->
<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
</property>

6.============mapred-site.xml============

<!-- 指定mapreducer向yarn提交 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

<property>
    <name>mapreduce.jobhistory.address</name>
    <value>bigdata01.hadoop.com:10020</value>
</property>

<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>bigdata01.hadoop.com:19888</value>
</property>

7.==========yarn-site.xml============

<!-- 指定哪个节点作为resourcemanager -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>bigdata03.hadoop.com</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>
===============================

8配置slaves

bigdata01.hadoop.com
bigdata02.hadoop.com
bigdata03.hadoop.com

【注意事项】:

1.slaves中配置集群中所有的主机名
2.所有节点上的配置文件内容都是一样的
3.要按照集群规划配置所属进程
4.配置普通用户, 所有节点 有相同的帐号密码

四、分发(注意每个节点的权限问题: /opt/没有写权限)

(bigdata01.hadoop.com)分发hadoop(已经配置好的)目录到其他两台(bigdata02和bigdata03)服务器上
 scp -r bigdata01要复制的目录  bigdata02复制到的目录

$ scp -r /opt/modules/hadoop-2.5.0/    bigdata02.hadoop.com:/opt/modules/
$ scp -r /opt/modules/hadoop-2.5.0/ bigdata03.hadoop.com:/opt/modules/

五、格式化Namenode

在namenode所在的服务器linux01上,进行格式化${HADOOP_HOME}/bin
$ bin/hdfs namendoe -format

【注意】

1.先将PC1的hadoop配置目录分发到PC2和PC3
2.保证3台上的配置内容一模一样
3.先确保将3台没有格式化信息
4.最后格式化

六、启动进程

在PC1上使用如下命令启动HDFS
$ sbin/start-dfs.sh

在PC1上使用如下命令启动YARN
$ sbin/start-yarn.sh

停止进程
在PC1上使用如下命令停止HDFS
$ sbin/stop-dfs.sh

在PC3上使用如下命令停止YARN
$ sbin/stop-yarn.sh

【注意】

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

七、检查启动是否正常

3台上jps查看进程,参考之前的集群规划

PC1:
28626 DataNode
28883 NodeManager
28989 Jps
28531 NameNode
7527 ResourceManager

PC2:
7528 DataNode
7826 Jps
7717 NodeManager
7583 SecondaryNameNode

PC3
7622 NodeManager
7922 Jps
7405 DataNode