2022-12-29
资源 yarn 计算 容器 作业
YARN是在做大数据开发的时候,最为常用的分布式计算中的资源调度框架。是Hadoop的核心组件之一。在Hadoop2.0的版本之前,MapReduce中集成了分布式计算的模块和资源调度的模块,这就使得分布式计算和资源调度之间的耦合度太高了,同时MapReduce的设计也会显得非常的臃肿。在Hadoop2.0版本的时候,开发人员将MapReduce做了拆分,将分布式计算的模块保留,将资源调度的模块单独的剥离出来,这就是YARN了。
YARN最早期的设计是为了解耦,优化MapReduce。但是由于YARN的通用性足够的优秀,以至于其他的分布式计算框架也都可以使用YARN来进行资源的调度。现在很多的分布式计算框架,例如Spark、Flink等,虽然他们也都内置了资源调度的部分,但实际在使用中,依然会选择使用YARN来进行资源的调度。
那么在分布式计算中,我们将一个计算任务提交到YARN上进行运行的时候,YARN是如何去处理这个任务的呢?我们就以一个MapReduce的程序为例,来说明一下提交到YARN上之后,YARN都做了什么。
在MapReduce的程序提交到YARN上运行的时候,有五个独立的进程需要首先了解一下:
●YarnRunner: 用于提交作业的客户端程序。
●ResourceManager: YARN资源管理器,负责协调集群上计算资源的分配。
●NodeManager: YARN节点资源管理器,负责启动和监视集群中,单个节点上的计算容器(Container)。
●Application Master: 负责协调运行MapReduce作业的任务,它和任务都是在容器中运行的,这些容器由资源管理器分配,并由节点管理器进行管理。
●HDFS: 用于共享作业所需文件。
1 调用waitForCompletion方法每秒轮询作业的进度,内部封装了submit()方法,用于创建JobCommiter实例,并且调用其的submitJobInternal方法。提交成功后,如果有状态改变,就会把进度报告到控制台。错误也会报告到控制台
2 JobCommiter实例会向ResourceManager申请一个新应用ID,用于MapReduce作业ID。这期间JobCommiter也会进行检查输出路径的情况,以及计算输入分片。
3 如果成功申请到ID,就会将运行作业所需要的资源(包括作业jar文件,配置文件和计算所得的输入分片元数据文件)上传到一个用ID命名的目录下的HDFS上。此时副本个数默认是10.
4 准备工作已经做好,再通知ResourceManager调用submitApplication方法提交作业。
5 ResourceManager调用submitApplication方法后,会通知Yarn调度器(Scheduler),调度器分配一个容器,在节点管理器的管理下在容器中启动 application master进程。
6 application master的主类是MRAppMaster,其主要作用是初始化任务,并接受来自任务的进度和完成报告。
7 然后从HDFS上接受资源,主要是split。然后为每一个split创建MapTask以及参数指定的ReduceTask,任务ID在此时分配
8 然后Application Master会向资源管理器请求容器,首先为MapTask申请容器,然后再为ReduceTask申请容器。(5%)
9 一旦ResourceManager中的调度器(Scheduler),为Task分配了一个特定节点上的容器,Application Master就会与NodeManager进行通信来启动容器。
10 运行任务是由YarnChild来执行的,运行任务前,先将资源本地化(jar文件,配置文件,缓存文件)
11 然后开始运行MapTask或ReduceTask。
12 当收到最后一个任务已经完成的通知后,application master会把作业状态设置为success。然后Job轮询时,知道成功完成,就会通知客户端,并把统计信息输出到控制台
开班时间:2021-04-12(深圳)
开班盛况开班时间:2021-05-17(北京)
开班盛况开班时间:2021-03-22(杭州)
开班盛况开班时间:2021-04-26(北京)
开班盛况开班时间:2021-05-10(北京)
开班盛况开班时间:2021-02-22(北京)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2020-09-21(上海)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2019-07-22(北京)
开班盛况Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号