yarn知识体系总结

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集群
以便于企业管理和节约了企业的成本

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

时间: 2024-10-09 07:27:37

yarn知识体系总结的相关文章

认知,构建个人的知识体系(上)

1.前言 本文将聊聊我对构建个人知识体系的一些想法,主要是为了提升自我认知.从个人经历开始,谈谈对知识的划分,也就是一个是什么,为什么的过程. 2.缘起 把时间回到一年前,那时候我工作快一年了,得益于前面的一些努力,工作比较顺利.特别是技术上,没有遇到太多过无法解决的问题.同时也开始迷茫,工作难道就是这个轻松的样子?三五年之后那不是很无趣,该怎么办? 想找到这个问题的答案,而最好的方式莫过于,亲自去了解那些三五年工作经验的人是怎么的样子. 因此从那时候起,关注了不少来公司面试的人的简历,也有过几

2016年本博客知识体系引导(持续更新)

前言 为了方便大家的阅读以及自己的知识体系的建立,特意来写出这个引导文章.以前我是遇到什么写什么,想到什么写什么,从2016年开始我将围绕这个知识体系来写文章,从点到面来逐步建立并完善自己的知识体系,同时也欢迎大家关注我的博客. 1.Android IPC机制 Android IPC机制(一)开启多进程 Android IPC机制(二)用Messenger进行进程间通信 Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用 Android IPC机制(四

如何搭建数据化运营知识体系

数据化运营的概念随着大数据时代的到来被炒得越来越火热,提到数据分析.数据运营让很多产品经理.运营新人觉得瞬间高大上很多.随着数据概念的火热,如增长黑客.GrowingIO等一系列的数据分析指导产品增长的书籍.产品变得越来越受人追捧. 对于互联网行业来说,无论是产品经理还是运营,都需要具备一定的数据运营能力,本文将帮助没有数据化思维的小伙伴搭建基础的数据化运营体系. 本文会按照上图中的数据化运营业务流程进行分析,从明确目标.数据指标制定.数据获取.数据分析.形成策略.验证优化这六个方面来搭建数据化

快速建立个人知识体系

最近建了一个运维架构知识体系的群,为什么要创办这么一个群,对大家有什么样的好处? 我相信刚参加工作的都会碰到这样的问题:新人刚入职领导交代一个不会,但是为了表现自己的能力不差,领导没有看走眼,硬着头皮也要完成下去,会面临如下几个问题: 第一时间在各大QQ群或微信群咨询那么你有没有想过你为什么提的问题没有人回答:1.没人回答还是你不会提问?2.牛人也有自己的工作,回答了是分享,不回答也是理所应当.之前写过一篇新人如何提问?不过,根据我的统计,不会提问的人大有人在.我先列举几个提问的问题. 大并发网

Web 前端知识体系精简

Web前端技术由html.css和javascript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言.而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构.本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍.目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希望共勉. JAVASCRIPT 篇 0.基础语法 Javascript基础语法包括:变量定义.数据类

职业程序员的知识体系

今天看到一篇文章,说人的知识分成两种,惰性知识和活性知识.那些对我们的工作,生活没有帮助的知识,称为惰性知识.惰性知识是用来装门面的,吹牛的.他不能解决我们的问题,只是填补我们生活的空虚.比如金鱼的记忆有几秒,就属于这种惰性知识.不过根据我最近的经验,我发现每天早上,当鱼儿们看见我拿起装鱼食的瓶子时,都很激动.这显然不是几秒记忆所能办到的. 为什么会有惰性知识呢?当一个知识不能与我们已有的知识体系建立关联,那么当我们遇到问题时,我们不会想到他,用到他,于是他就成了惰性知识.就好像你是一个将军,手

沟通是项目管理知识体系中的九大知识领域之一

项目管理要素有:范围.时间.成本.质量.人力.风险.采购.沟通.在项目管理中,沟通是一个软指标,其所起的作用不好量化,沟通对项目的影响往往也是隐形的.项目沟通管理是现代项目管理知识体系中的九大知识领域之一,项目沟通管理在成功所必须的因素-人.想法和信息之间提供了一个关键性连接. 沟通对项目的成功,尤其是IT项目的成功非常重要.本文就围绕沟通的重要意义.项目干系人.沟通对效率的影响.沟通的关键要素这几方面展开一些探讨,最后结合高职外语教学.综合测评平台项目,对沟通在小组软件开发过程中的应用进行案例

前端涉及的所有知识体系

资源教程: 综合类 前端知识体系 前端知识结构 Web前端开发大系概览 Web前端开发大系概览-中文版 Web Front-end Stack v2.2 免费的编程中文书籍索引 前端书籍 前端免费书籍大全 前端知识体系 免费的编程中文书籍索引 智能社 - 精通JavaScript开发 重新介绍 JavaScript(JS 教程) 麻省理工学院公开课:计算机科学及编程导论 JavaScript中的this陷阱的最全收集--没有之一 JS函数式编程指南 JavaScript Promise迷你书(中

web前端知识体系大全

1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的是想要颠覆人们对于前端只有三大块(html.css.js)的认识——做web前端需要的比这三大块要多得多. 拖了好几个月了,但是由于近期将要参加的某一个活动,我不得不这两天把这个东西整出来.说干就干.上午我就开始在办公室画草图,乱七八糟的在那儿理思路. 大家不要害怕,其实下文中的这个知识框架要比草图中的好看的