YARN学习总结补充+zookeeper安装

Posted 奔跑的郭小明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YARN学习总结补充+zookeeper安装相关的知识,希望对你有一定的参考价值。

YARN提交作业大致流程(补充):

过程详述:

1.请求ResourceManager获得container来运行程序(with容器参数:CPU/内存)

2.返回jobid和用于提交程序资源的路径

3.扫描目录中文件并切片放入ArrayList中并序列化放入YARN指定目录(split)

4.将job对象的参数 + JAR包(程序所有类) 也放入YARN指定目录(xml,jar)

5.激活ResourceManager(资源准备完成)并放入其中任务队列

6.ResourceManager检查NodeManager的CPU和内存来分配任务

(实际情况:NodeManager会定期发送心跳传输CPU和空闲内存及接收任务)

7.NodeManager会创建容器下载对应资源和ResourceManager启动对应的NodeManager的ApplicationMaster

8.ApplicationMaster基于切片数量对应数量MapTask,基于jar.xml参数设置对应数量的ReduceTask,向ResourceManager请求对应数量容器来启动Task(一台机器可有多个Container)

9.ApplicationMaster会发送shell命令给其他NodeManager启动YARN child(maptask)

10.maptask完成任务后,reducetask进行合并数据、分类聚合(调用reduce)、输出结果

11.所有的reducetask完成后,ApplicationMaster会向ResourceManager注销,结束


※ 针对NameNode单一宕机的解决

通常我们只有一台NameNode,一旦出现宕机会导致整个Hadoop无法工作,所以可以考虑两台NameNode(基于状态,需要同步数据),其中还一台设为active状态,另一台可置为standby,切可以互相切换。

要使处于standby的namenode与active的namenode数据同步,但是定期传输会导致传输频繁,一般在active的namenode记录于内存中,并将其写入一个公共日志存储管理系统,standby读取公共日志存储管理系统的数据存入内存和定期存入磁盘,但是要考虑公共日志管理系统可能出现单点故障(即该管理系统再异常就无法实现数据同步),因此公共日志管理系统也是集群方式,管理系统中的leader(主)出错后,由剩余的机器作为leader来实现管理功能。该公共日志管理系统是依赖于Zookeeper(基础组件)。


※ Zookeeper功能

①可以为客户端管理少量数据<key,value>

eg.(key必须是以/开头)

/aa “hello”

/aa/bb "scala" (子key)

②可以为客户端监听指定数据节点的状态并在数据节点发生变化时通知客户端



※ Zookeeper通常配置奇数台(3-5)

其程序只有一种QuorumpeerMain,会选取其中一个为leader,剩余为follwer。

选取leader过程,第1号启动时会寻找leader,即访问2888端口,若有leader则成为follwer,没有leader则联系其他机器的3888端口进行选举投票,若仅一台机器则投本机,但是了解Zookeeper有五天机器未超过3票则等待重新投票,第2号机器已经启动(投给自己),第一台机器也投给了2号,同理3号机器启动获得了3票作为leader,剩余第4,5号获取到了leader自动成为follwer。


※ 安装Zookeeper

1.导入tar

2.tar -zxvf zookeeper-3.4.6.tar.gz

3.cd zookeeper-3.4.6

4.rm -rf docs (文档)

5.rm -rf src (源码)

6.cd conf

7.cp zoo_sample.cfg zoo.cfg (真正起作用的是zoo.cfg)

8.vi zoo.cfg

数据目录: dataDir = /tmp/zookeeper

改为: /home/zkdata

添加:

server.1=hdp-01:2888:3888

server.2=hdp-02:2888:3888

server.3=hdp-03:2888:3888

(注:2888用于寻找leader;3888用于选举投票)

mkdir /home/zkdata

*多台机器配置相同配置

hdp-01: echo 1 > zkdata/myid

hdp-02: echo 2 > zkdata/myid

hdp-03: echo 3 > zkdata/myid

9.启动zookeeper

①cd /zookeeper/bin ②bin/zkServer.sh start

10.检查是否已启动(jps)

13962 QuorumPeerMain

11.bin/zkServer.sh status检查状态(会发现连接不上服务)

JMX enabled by default

Using config: /home/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

12.将hdp-02和hdp-03相同配置启动

再次查看status:

①JMX enabled by default

Using config: /home/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg

Mode: follower

②JMX enabled by default

Using config: /home/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg

Mode: leader

13.vi zkmanager.sh

#!bin/bash

for host in hdp-01 hdp-02 hdp-03

do

echo "${host}:starting....."

ssh $host "source /etc/profile;/home/zookeeper/zookeeper-3.4.6/bin/zkServer.sh $1"

done


sleep 2


for host in hdp-01 hdp-02 hdp-03

do

echo "${host}:starting....."

ssh $host "source /etc/profile;/home/zookeeper/zookeeper-3.4.6/bin/zkServer.sh status"

done


其中$1是接收参数

开启sh zkmanager.sh start

关闭sh zkmanager.sh stop


效果如图:

以上是关于YARN学习总结补充+zookeeper安装的主要内容,如果未能解决你的问题,请参考以下文章

hadoop学习记录

hadoop学习记录

大数据学习——安装zooleeper

zookeeper伪分布安装配置

Zookeeper完全分布式安装

zookeeper集群安装