hadoop分布式集群部署步骤总结

本文详细介绍了Hadoop分布式集群的部署步骤,包括理论基础如HA、HDFS、YARN的概念,集群规划,环境检查,JDK、Zookeeper和Hadoop的安装配置。特别强调了Zookeeper的奇数节点设置,以及NameNode和ResourceManager的HA实现。最后,验证了HDFS和YARN的正常运行,标志着集群搭建完成。
摘要由CSDN通过智能技术生成

一、理论基础

( 一)  HA 概念以及作用
  HA(High Available), 高可用性群集,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。

(二) HDFS概述
基础架构

1、NameNode(Master)

1)命名空间管理:命名空间支持对HDFS中的目录、文件和块做类似文件系统的创建、修改、删除、列表文件和目录等基本操作。

2)块存储管理。

NameNode+HA架构

这里写图片描述

  从上面的架构图可以看出,使用Active NameNode,Standby NameNode 两个节点可以解决单点问题,两个节点通过JounalNode共享状态,通过ZKFC 选举Active ,监控状态,自动备份。

1、Active NameNode

  接受client的RPC请求并处理,同时写自己的Editlog和共享存储上的Editlog,接收DataNode的Block report, block location updates和heartbeat。

2、Standby NameNode

  同样会接到来自DataNode的Block report, block location updates和heartbeat,同时会从共享存储的Editlog上读取并执行这些log操作,保持自己NameNode中的元数据(Namespcae information + Block locations map)和Active NameNode中的元数据是同步的。所以说Standby模式的NameNode是一个热备(Hot Standby NameNode),一旦切换成Active模式,马上就可以提供NameNode服务。

3、JounalNode

  用于Active NameNode , Standby NameNode 同步数据,本身由一组JounnalNode节点组成,该组节点奇数个。

4、ZKFC

  监控NameNode进程,自动备份。

(三) YARN概述
基础架构

1、ResourceManager(RM)

  接收客户端任务请求,接收和监控NodeManager(NM)的资源情况汇报,负责资源的分配与调度,启动和监控ApplicationMaster(AM)。

2、NodeManager

  节点上的资源管理,启动Container运行task计算,上报资源、container情况汇报给RM和任务处理情况汇报给AM。

3、ApplicationMaster

  单个Application(Job)的task管理和调度,向RM进行资源的申请,向NM发出launch Container指令,接收NM的task处理状态信息。

4、Web Application Proxy

  用于防止Yarn遭受Web攻击,本身是ResourceManager的一部分,可通过配置独立进程。ResourceManager Web的访问基于守信用户,当Application Master运行于一个非受信用户,其提供给ResourceManager的可能是非受信连接,Web Application Proxy可以阻止这种连接提供给RM。

5、Job History Server

  NodeManager在启动的时候会初始化LogAggregationService服务, 该服务会在把本机执行的container log (在container结束的时候)收集并存放到hdfs指定的目录下. ApplicationMaster会把jobhistory信息写到hdfs的jobhistory临时目录下, 并在结束的时候把jobhisoty移动到最终目录, 这样就同时支持了job的recovery.History会启动web和RPC服务, 用户可以通过网页或RPC方式获取作业的信息。

ResourceManager+HA架构

这里写图片描述

  ResourceManager HA 由一对Active,Standby结点构成,通过RMStateStore存储内部数据和主要应用的数据及标记。

二、集群规划

  • 主机规划
主机名 IP 安装的软件 运行的进程
cs0 192.168.80.128 jdk1.7、hadoop、zookeeper NameNode、ResourceManager、JournalNode、QuorumPeerMain、DFSZKFailoverController(zkfc)
cs1 192.168.80.129 jdk1.7、hadoop、zookeeper NameNode、ResourceManager、JournalNode、QuorumPeerMain、DFSZKFailoverController(zkfc)
cs2 192.168.80.130 jdk1.7、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
cs3 192.168.80.131 jdk1.7、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
cs4 192.168.80.132 jdk1.7、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

备注:Journalnode和ZooKeeper保持奇数个,这点大家要有个概念,最少不少于 3 个节点。

  • 目录规划
名称 路径
所有软件目录 /home/hadoop/app/
所有数据和日志目录 /home/hadoop/data/

三、集群安装前的环境检查

  • 时钟同步

所有节点的系统时间要与当前时间保持一致。

查看当前系统时间

[root@cs0 ~]# date
Sun Apr 24 04:52:48 PDT 2016

如果系统时间与当前时间不一致,进行以下操作。

[root@cs0 ~]# cd /usr/share/zoneinfo/
[root@cs0 zoneinfo]# ls     //找到Asia
[root@cs0 zoneinfo]# cd Asia/       //进入Asia目录
[root@cs0 Asia]# ls     //找到Shanghai
[root@cs0 Asia]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime        //当前时区替换为上海

我们可以同步当前系统时间和日期与NTP(网络时间协议)一致。

[root@cs0 Asia]# yum install ntp   //如果ntp命令不存在,在线安装ntp
[root@cs0 Asia]# ntpdate pool.ntp.org       //执行此命令同步日期时间
[root@cs0 Asia]# date       //查看当前系统时间
  • hosts文件检查

所有节点的hosts文件都要配置静态ip与hostname之间的对应关系。

[root@cs0 ~]# vi /etc/hosts
192.168.80.128 cs0
192.168.80.129 cs1
192.168.80.130 cs2
192.168.80.131 cs3
192.168.80.132 cs4
  • 禁用防火墙

所有节点的防火墙都要关闭。

查看防火墙状态

[root@cs0 ~]# service iptables status
iptables: Firewall is not running.

如果不是上面的关闭状态,则需要关闭防火墙。

[root@cs0 ~]#  chkconfig iptables off      //永久关闭防火墙
[root@cs0 ~]#  service iptables stop   

四、 配置SSH免密码通信

hadoop@cs0 ~]$ mkdir .ssh  // 注意:此处的需要使用chmod 700 .ssh 将权限改为700
[hadoop@cs0 ~]$ ssh-keygen -t rsa     //执行命令一路回车,生成秘钥
[hadoop@cs0 ~]$cd .ssh 
[hadoop@cs0 .ssh]$ ls 
authorized_keys  id_rsa  id_rsa.pub  known_hosts
[hadoop@cs0 .ssh]$ cat id_rsa.pub >> authorized_keys       //将公钥保存到authorized_keys认证文件中 //注意:authorized_keys 的权限为600 

备注:”公钥登录”,原理,即用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

集群所有节点都要行上面的操作。

将所有节点中的共钥id_ras.pub拷贝到djt11中的authorized_keys文件中。
cat ~/.ssh/id_rsa.pub | ssh hadoop@cs0 'cat >> ~/.ssh/authorized_keys'

所有节点都需要执行这条命令

然后将cs0中的authorized_keys文件分发到所有节点上面。

scp -r authorized_keys hadoop@cs1:~/.ssh/

scp -r authorized_keys hadoop@cs2:~/.ssh/

scp -r authorized_keys hadoop@cs3:~/.ssh/

scp -r authorized_keys hadoop@cs45:~/.ssh/

五、脚本工具的使用

在cs0节点上创建/home/hadoop/tools目录。

[hadoop@cs0 ~]$ mkdir /home/hadoop/tools

[hadoop@cs0 ~]$cd /home/hadoop/tools

在/home/hadoop/tools分别建立以下脚本文件。

[hadoop@cs0 tools]$ vim deploy.conf

cs0,all,namenode,zookeeper,resourcemanager,
cs1,all,slave,namenode,zookeeper,resourcemanager,
cs2,all,slave,datanode,zookeeper,
cs3,all,slave,datanode,zookeeper,
cs4,all,slave,datanode,zookeeper,

[hadoop@cs0 tools]$ vim deploy.sh

#!/bin/bash
#set -x

if [ $# -lt 3 ]
then 
  echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag"
  echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile"
  exit 
fi

src=$1
dest=$2
tag=$3
if [ 'a'$4'a' == 'aa' ]
then
  confFile=/home/hadoop/tools/deploy.conf
else 
  confFile=$4
fi

if [ -f $confFile ]
then
  if [ -f $src ]
  then
    for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` 
    do
       scp $src $server":"${dest}
    done 
  elif [ -d $src
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值