码迷,mamicode.com
首页 > 其他好文 > 详细

yarn知识体系总结

时间:2019-02-19 11:54:33      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:特定   分布式框架   并且   tag   rpc   重启   生命周期   资源分配   red   

2019/2/18 星期一

yarn知识体系总结

Yarn 产生的原因
(1)MapreduceV1 中,jobtracker 存在瓶颈:
集群上运行的所有mr 程序都有jobtracker 来调度
SPOF 单点故障
职责划分不清晰
(2) 将jobtracker 的职责划分成两个部分:
? 资源调度与管理:由统一的资源调度平台(集群)来实现(yarn)
? 任务监控与管理:
A、每一个application 运行时拥有一个自己的任务监控管理进程AppMaster
B、AppMaster 的生命周期:application 提交给yarn 集群之后,yarn 负责启动该application 的AppMaster,随后任务的执行监控调度等工作都交由AppMaster,待这个application 运行完毕后,AppMaster 向yarn 注销自己。
C、AppMaster 的具体实现由application 所使用的分布式运算框架自己负责,比如Mapreduce 类型的application 有MrAppMaster 实现类。Spark DAG 应用则有SparkOnYarn 的SparkContext 实现

yarn的基本概念-mr程序提交的流程
yarn:hadoop的资源管理调度平台(集群)---为用户程序提供运算资源的管理和调度
用户程序:如用户开发的mr程序

yarn的2个主要的类节点(服务进程)
1、resourcemanager 主节点master --- 只需要1个 (也可以实现HA)
2、nodemanager 从节点 -----根据集群规模可以有多个
具体小结如下:
(1)ResourceManager ----> master node,可配多个RM 实现HA 机制,
ResourceManager由两个核心组件构成:
Scheduler 和ApplicationsManager;
Scheduler:负责资源调度,调度策略可插拔(内置实现CapacityScheduler / FairScheduler )不提供对application 运行的监控;
ApplicationsManager:负责响应任务提交请求,协商applicationMaster 运行的container,重启失败的applicationMaster
(2)NodeManager ----> slave nodes,每台机器上一个
职责:加载containers,监控各container 的资源使用情况,并向Resourcemanager/Scheduler 汇报
(3)ApplicationMaster ----> 特定运算框架自己实现,接口为统一的AppMaster
职责:向Scheduler 请求适当的资源,跟踪任务的执行,监控任务执行进度、状态等

mr程序提交的详细流程

1、runjar启动起来之后,就会找resourcemanager,发出一个远程过程调用RPC //申请提交一个job(mr程序)
2、resourcemanager会返回一个jobid以及一个提交job相关文件的hdfs路径给runjar程序 比如:hdfs://../stagingDIR
3、runjar就会上传job相关的文件到hdfs路径下 比如:hdfs://.../stagingDIR/jobid/worcount.jar
jbo.xml
job split的切片信息
4、通知RM,文件上传成功
5、在RM内部会对本次客户端提交的任务,构造出一个任务出来,放在他的内部的任务队列中。别的客户端提交上来的任务也会在这个队列中,当资源不够的时候,会等待。
6、nodemanager和resourcemanager之间时刻都保持着一个心跳的通信,任务出来之后,nodemanager会去自动去领取任务,比如:nodemanager在领取任务的时候被其中一个节点领取到了任务,nodemanager会到hdfs上拉取job的相关的文件。
7、nodemanager在自己的内部隔离出一部分资源出来,形成一个容器(container)cpu+mem 这个任务要做的第一件事情是:他会在容器里面去启动一个程序,(那他怎么知道去启动这个程序的呢?resource manager会在这个job任务中描述的会嵌入一个启动程序的shell命令)nodemanager负责把这个shell命令在他的机器上执行一下就ok了,执行以下就会在容器中启动一个MapReduce jar包中的一个程序,这个程序就叫做(MRappmaster进程)接下来所有的处理流程就由这个MRappmaster进程来主导了。
MRAPPmaster会做什么事?他本身又是个什么东西呢?
MRappmaster:其实就是一个MapReduce的应用程序的主管。这个主管进程是MapReduce框架来实现的,这个就是用来管理这个MapReduce程序的执行
在yarn中其实就只负责到把mrappmaster进程启动起来。其他的MapReduce程序具体是怎么运行的,yarn就不管了。yarn只负责给你相应需要的资源就Ok了
8、mrappmaster启动起来之后,会向resourcemanager注册并申请程序运行的资源。mrappmaster会启动map task和reduce task进程,所以需要资源包括监控和管理任务所需要的资源。
9、resourcemanager就会把mrappmaster申请的响应的资源分配给他,那么在任务队列中就又会产生新的任务,这些任务是交给nodemanager去处理的(其实就是分配资源的任务)nodemanager领取到新的分配资源的任务的时候就会在自己的这台机器上创建新的容器(一台机器上可以创建多个容器)每台nodemanager创建好的容器资源列表会返回给RM
10、RM就会返回资源列表信息给MRappmaster
11、mrappmaster就会去找到每台nodemanager中领到任务并创建容器的机器,让他们去启动map task进程。(要启动几个map task进程是看job任务中关于job split切片规则的,规则中是几个就起几个map task进程)
12、当map task处理完成任务后会返回信息给mrappmaster 告诉他我把处理好的 任务结果放在了哪里哪里....
13、mrappmaster会再次向RM申请新的资源,RM会为这次的申请再次分配一个任务到任务队列中,那么其中的一个nodemanager会去领取任务,并且分配容器,然后会返回给RM,告诉他我创建好了容器,然后RM会告诉给MRappamster告诉他,你需要的资源,我给你创建好了,并且告诉他在那台nodemanager上。
14、mrappmaster会在响应的nodemanager容器中启动一个reduce task 进程,并且告诉他map 输出的结果在哪里 哪里...
reduce task就会去拿,在执行他的内部的执行过程
16、reduce task就会给mrappmaster返回处理结果,
17、整个MR程序处理完成,mrappmaster向RM注销自己。

小结:
YARN的工作机制--MR程序运行流程
查看map task和reduce task的进程用命令jps看到的是yarn child

总结:
1.yarn只响应job的提交及为job的运行分配资源
yarn不参与job的具体运行机制和流程
2.mapreduce程序中有一个MrAppmaster来负责程序的 具体运行流程控制
3.由于yarn不提供用户程序的具体运行,所以yarn可以为各种类型的资源程序提供资源服务
(YARN就类似于一个操作系统平台,可以运行各种各样运算框架所开发的程序:mapreduce storm spark...)
4.因为yarn的这种运行机制,延长了hadoop的生命周期
5.因为yarn可以整合各种各样的运算框架,企业就可以把各种分布式框架整合到hadoop集群
以便于企业管理和节约了企业的成本

yarn知识体系总结

标签:特定   分布式框架   并且   tag   rpc   重启   生命周期   资源分配   red   

原文地址:http://blog.51cto.com/12445535/2351696

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!