hadoop分布式集群

一、设置IP地址、网关、DNS
nat地址:
nat

约定:

第一块网卡为外网
第二块网卡为内网(没有外网的机器也要将内网配置在第二块网卡上)
网关配置
说明:CentOS 6.6默认安装好之后是没有自动开启网络连接的!

输入账号root

再输入安装过程中设置的密码,登录到系统

vi /etc/sysconfig/network-scripts/ifcfg-eth0 #编辑配置文件,添加修改以下内容

BOOTPROTO=static   #启用静态IP地址
ONBOOT=yes  #开启自动启用网络连接
IPADDR=192.168.60.41  #设置IP地址
NETMASK=255.255.255.0  #设置子网掩码
GATEWAY=192.168.60.2   #设置网关
DNS1=8.8.8.8 #设置主DNS
DNS2=8.8.4.4 #设置备DNS
IPV6INIT=no  #禁止IPV6

:wq!  #保存退出    :q!  #不保存退出
service ip6tables stop   #停止IPV6服务
chkconfig ip6tables off  #禁止IPV6开机启动
service yum-updatesd stop   #关闭系统自动更新
chkconfig yum-updatesd off  #禁止开启启动
service network restart  #重启网络连接
ifconfig  #查看IP地址
  以下可省略:
service iptables stop    #关闭linux防火墙
chkconfig iptables off
service sshd start    #启动ssh服务

二、设置主机名

约定:
主机名命名规范:业务.机房.主备.域名
这里设置主机名为:b01
1、hostname “b01”
设置主机名为b01

2、vi /etc/sysconfig/network  #编辑配置文件
  HOSTNAME= b01
修改localhost.localdomain为b01
:wq!  #保存退出

主机名修改
shutdown -r now #重启系统
系统环境
1、创建用户
安装、运维及监控皆需使用hadoop用户。

root用户下执行如下命令进行添加hadoop用户。
useradd hadoop
passwd hadoop (输入两遍密码)
开发用户可选用其他新建用户

2、配置SSH互信
配置目的
配置集群内SSH互信并不是hadoop集群搭建中必须的,但是配置互信的主要作用是为集群统一管理和监控带来极大的便利。我们修改配置文件很多时候是对集群内所有服务器进行修改,有了SSH互信对于配置文件的传输非常便利,同时监控服务,统一启停集群也非常方便。

SSH服务简介
root用户的互信在维护监控时可有可无,hadoop用户的互信最好配置上。
1. ssh-keygen 创建公钥(Public Key)和密钥(Private Key)。
2. ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限
3. 我们使用client端去登陆server端免密码输入。
 Client 必须制作 Public & Private 这两把 keys,且 Private Key需放到~/.ssh/ 内;
 Server 必须要有 Public Key ,且放置到用户家目录下的~/.ssh/authorized_keys,同时目录的权限 (.ssh/) 必须是 700 而目录文件则必须为 600 ,同时文件的拥有者与群组都必须与该账号吻合才行。

进行免密码验证配置之前,要保证机器可以正常通信。

1、首先在MASTER机器配置
  进去.ssh文件夹: [hadoop@b01 ~]$ cd~/.ssh/
生成秘钥 ssh-keygen : ssh-keygen -t rsa ,一路狂按回车键就可以了
最终生成(id_rsa,id_rsa.pub两个文件)
  生成authorized_keys文件:
cat id_rsa.pub >> authorized_keys 

2、在另两台SLAVE机器也生成公钥和秘钥
步骤跟MASTER是类似的
进去.ssh文件: [hadoop@b01 ~]$ cd~/.ssh/
生成秘钥 ssh-keygen :ssh-keygen -t rsa ,一路狂按回车键就可以了
最终生成(id_rsa,id_rsa.pub两个文件)

3、将两台SLAVE机器的id_rsa.pub文件copy到MASTER机器:
scp id_rsa.pub hadoop@b01:~/.ssh/id_rsa.pub_sl1
scp id_rsa.pub hadoop@b01:~/.ssh/id_rsa.pub_sl2

4、切换到机器MASTER合并authorized_keys;
 cat id_rsa.pub_sl1>> authorized_keys
 cat id_rsa.pub_sl2 >>authorized_keys 

5、将authorized_keyscopy到两台SLAVE机器(/home/spark/.ssh):
 scp authorized_keys hadoop@b2:~/.ssh/
 scp authorized_keys hadoop@b3:~/.ssh/

6、更改文件夹权限
现在将Master机器和两台slave机器.ssh/文件夹权限改为700,authorized_keys文件权限改为600or 644)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

7、完成以上操作后可以开始ssh验证了

3、Selinux
由于Selinux是基于角色的访问控制策略设置,由于设置非常繁琐。所以如无必要关闭Selinux即可
root用户下进行操作。
1.显示Selinux状态命令:getenforce或者sestatus命令。
Selinux有「disabled」「permissive」,「enforcing」3种选择。
 Disabled不设置控制访问权限的策略。
 Permissive为Selinux有效,但是即使你违反了策略的话也能继续操作,但是把违反内容记录下来。
 Enforcing就是违反了策略,就无法继续操作下去。
2.设置Selinux。执行如下命令可实时将Selinux修改为permissive状态。

setenforce 0

3.修改配置文件将默认状态修改为disabled。

修改/etc/selinux/config
SELINUX=disabled

4、时间同步服务
root用户下进行操作。

配置目的
hadoop集群间节点时间不宜超过30秒,否则在运行任务时可能出现异常。
如果使用hbase数据库那么对于时间同步的要求非常严格。
为此我们使用NTP服务来进行集群件服务器的时间同步:选取其中一台服务器为ntp服务端,其他服务器作为NTP客户端来同步此服务器的时间。

配置文件
需要修改配置文件/etc/sysconfig/ntpd与/etc/ntp.conf。

1./etc/sysconfig/ntpd
添加SYNC_HWCLOCK=yes设置NTP服务自动同步硬件时间

ntpd
2./etc/ntp.conf
需要关注的是两个关键词,server与restrict.
利用restrict 来管理权限控制,控制其他客户端来进行访问。格式如下:
restrict [IP] mask [netmask_IP] [parameter]
Parameter 的参数主要如下:
 ignore :拒绝所有类型的NTP联机。
 nomodify: 客户端不能使用ntpc 与ntpq 这两个程序来修改服务器的时间参数,但客户端可透过这部主机来进行网络校时;
 noquery:客户端不能够使用ntpc 与ntpq 等指令来查询时间服务器,不提供NTP的网络校时。
 notrap:不提供trap 这个运程事件登入的功能。
 notrust:拒绝没有认证的客户端。
 Kod:kod技术可以阻止“Kiss of Death “包对服务器的破坏。
 Nopeer:不与其他同一层的NTP服务器进行时间同步。

利用server 设定上层NTP服务器,作为客户端访问其他服务端。格式如下:
server [IP or hostname] [prefer]
 perfer:表示优先级最高
 burst:当一个运程NTP服务器可用时,向它发送一系列的并发包进行检测。
 iburst:当一个运程NTP服务器不可用时,向它发送一系列的并发包进行检测。

NTP服务端设置访问权限:在/etc/ntp.conf
restrict 127.0.0.1
restrict ::1
设定ip地址权限
restrict 192.168.60.0 mask 255.255.255.255 nomodify
#设定区域网内的访问权限,选择网段设置
restrict 192.168.60.0 mask 255.255.255.0 nomodify
#最上层服务器必须跟自己进行校对否则客户端不能进行同步
server   127.127.1.0 

NTP客户端设置访问权限:在/etc/ntp.conf
server 192.168.60.41 perfer

全部服务器启动NTP服务,每次修改配置文件也需要重启NTP服务,注:默认情况15分钟后才会与上层NTP服务器进行时间校对。也可能更长。

启动:service ntpd start
关闭:service ntpd stop
重启:service ntpd restart

设置开机启动:chkconfig ntpd on

服务端查看状态:ntpq –p或者ntpstat

b01
ntp.conf
b2
ntp.conf

5、修改最大进程数和句柄数
root用户下进行操作。
由于默认用户的最大进程数和句柄数不满足大数据多文件,参数需要调整大一些。否则会报错。
这里只是设置了hadoop用户和root用户的权限,如果存在其他开发用户,也需要一并添加。

修改/etc/security/limits.conf添加如下
hadoop   soft  nofile  131072
hadoop   hard  nofile  131072
修改/etc/security/limits.d/90-nproc.conf添加如下
hadoop    soft    nproc      unlimited
root       soft    nproc      unlimited
hadoop    hard    nproc      unlimited

6、修改主机名文件

root用户下进行操作。
修改/etc/hosts文件
#第一列为IP地址,后面每列皆为ip地址的hostname别名
192.168.60.41   b01 hivemysql
##b01的别名hivemysql是作为在hive-site.xml文件的配置,ha比较便利
192.168.60.42   b2
192.168.60.43   b3

7、防火墙
防火墙可关闭,也可根据需要设置。

root用户下操作
1.关闭防火墙服务
service iptables stop
2.设置防火墙服务器开机不自动启动
chkconfig iptables off

3.如果不关闭防火墙的话,需进行单独设置
集群内所有服务器之间需开放所有端口的tcp和udp端口。
集群内所有服务器需具备访问oracle数据库的权限,以便sqoop导数之用。

安装hadoop集群

1:给hadoop用户增加sudo权限

  1)切换到root用户,su 输入密码
  2)给sudoers增加写权限:chmod u+w /etc/sudoers
  3)编译sudoers文件:vim /etc/sudoers       
      在root ALL=(ALL)  ALL下方增加     
        hadoop ALL=(ALL)NOPASSWD:ALL
  4)去掉sudoers文件的写权限:chmod u-w /etc/sudoers

2:每台机器上安装java环境( jdk-7u51-linux-x64.tar)
解压到指定目录,这里我选择的是/opt

tar -zxvf jdk-7u51-linux-x64.tar /opt
mv /opt/jdk1.7.0_51 /opt/java 
  配置环境变量,
vim /etc/profile (如果没有权限可以前边加入sudo)
export JAVA_HOME=/opt/java
export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:
%JAVA_HOME%/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

3:解压hadoop到指定目录(我这里使用的是/opt/目录)

tar -zxvf hadoop-2.7.0.tar.gz /opt/hadoop-2.7.0
重命名文件:mv /opt/hadoop-2.7.0 /opt/hadoop

在/opt/hadoop/目录下,建立tmp、hdfs/name、hdfs/data目录,执行如下命令

mkdir /opt/hadoop/tmp 
mkdir /opt/hadoop/hdfs 
mkdir /opt/hadoop/hdfs/data 
mkdir /opt/hadoop/hdfs/name

3),设置环境变量,#vi ~/.bash_profile

 #set hadoop path
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin
4),使环境变量生效,$source ~/.bash_profile

  Hadoop配置 
进入$HADOOP_HOME/etc/hadoop目录,配置 hadoop-env.sh等。涉及的配置文件如下: 
hadoop-2.7.1/etc/hadoop/hadoop-env.sh 
hadoop-2.7.1/etc/hadoop/yarn-env.sh 
hadoop-2.7.1/etc/hadoop/core-site.xml 
hadoop-2.7.1/etc/hadoop/hdfs-site.xml 
hadoop-2.7.1/etc/hadoop/mapred-site.xml 
hadoop-2.7.1/etc/hadoop/yarn-site.xml

hadoop-env.sh:

export JAVA_HOME=/opt/java 

yarn-env.sh

export JAVA_HOME=/opt/java

core-site.xml:

<configuration>  
  <property>  
    <name>fs.default.name</name>  
    <value>hdfs://b01:9000</value> 
    <description>HDFS的URI,文件系统://namenode标识:端口号</description>
  </property>  
  <property>  
    <name>hadoop.tmp.dir</name>  
    <value>file:/opt/hadoop/tmp</value> 
    <description>namenode上本地的hadoop临时文件夹   </description>
  </property>  
</configuration> 

hdfs-site.xml:

 <configuration>  
  <property>  
    <name>dfs.replication</name>  
    <value>2</value>  
    <description>副本个数,配置默认是3,应小于datanode机器数量</description>
  </property>  
  <property>  
    <name>dfs.namenode.name.dir</name>    <value>file:/opt/hadoop/dfs/name</value>  
    <description>namenode上存储hdfs名字空间元数据 </description> 
  </property>  
  <property>  
    <name>dfs.datanode.data.dir</name>  <value>file:/opt/hadoop/dfs/data</value>  
   <description>datanode上数据块的物理存储位置</description>
  </property>  
  <property>  
    <name>dfs.namenode.secondary.http-address</name>  
    <value>b01:9001</value>  
  </property>
  <property>  
    <name>dfs.webhdfs.enabled</name>  
    <value>true</value>  
  </property>
</configuration>  

mapred-site.xml:

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
 <name>mapreduce.jobhistory.address</name>
  <value>b01:10020</value>
  </property>
  <property>      
 <name>mapreduce.jobhistory.webapp.address</name>
  <value>b01:19888</value>
 </property>
</configuration>

yarn-site.xml:

<configuration>
<!-- Site specific YARN configuration properties -->
  <property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
  </property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce
  .shuffle.class</name>           
<value>org.apache.hadoop.mapred.ShuffleHandler
 </value>  
</property>  
<property>            
<name>yarn.resourcemanager.address</name>  
<value>b01:8032</value>  
</property>  
<property>  
 <name>yarn.resourcemanager.scheduler.address</name>  
   <value>b01:8030</value>  
</property>  
<property>  
<name>yarn.resourcemanager.resource-tracker.address</name>  
  <value>b01:8031</value>  
</property>  
<property>              
<name>yarn.resourcemanager.admin.address</name>  
<value>b01:8033</value>  
</property>  
<property>            
<name>yarn.resourcemanager.webapp.address</name>  
<value>b01:8088</value>  
</property>  
</configuration>

8:编辑slaves文件

   清空加入从节点的名字
     b1
     b2

9:将hadoop分发到各个节点(因为权限问题,先将该文件夹分发到各个节点的/home/hadoop目录下,再进入各个节点将文件夹移到/opt下)

   scp -r /opt/hadoop b2:/home ,
   进入该节点执行:sudo mv hadoop /opt/
   scp -r /opt/hadoop b3:/home ,
   进入该节点执行:sudo mv hadoop /opt/

10:在master节点格式化hdfs

1)格式化namenode
  bin/hdfs namenode -format
  看见status 0表示安装成功
2)启动NameNodeDataNode 守护进程
  $ sbin/start-dfs.sh
3)启动ResourceManagerNodeManager 守护进程
  $ sbin/start-yarn.sh
启动验证 
1)执行jps命令,有如下进程,说明Hadoop正常启动
# jps
11044 Jps
5999 ResourceManager
5122 SecondaryNameNode
4836 NameNode
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值