在大数据生态环境中,yarn主要有两个作用:资源管理和程序调度。
二、Yarn的组成 主要由ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件
构成。
(1)ResourceManager作用:
1)处理客户端请求;2)监控NodeManager,对各个NodeManager上的资源进行统一管理和调度;3)给ApplicationMaster分配空闲的Container运行并监控其运行状态(Scheduler来完成); 主要组成:资源调度器(Sheduler)和应用程序管理器(ApplicationManager)。
(2)NodeManager作用:
1)负责管理单个节点上的资源;2)定时的向RM汇报本节点上的资源使用情况和Container的运行状态。
(3)ApplicationMaster作用:
1)负责整个任务执行的监控,可以向RM汇报任务执行的状态,重启失败任务等;2)向RM为应用程序申请资源并分配给内部的任务。
(4)Container
可以理解为Yarn 中的资源抽象,封装了某个节点上的多维度资源,如内存、cpu、硬盘、网络等,AM向RM申请资源时,RM返回的资源就是用Container表示的。
1.作业提交
第 1 步:Client 调用 job.waitForCompletion 方法,向整个集群提交 MapReduce 作业,并向 RM 申请一个作业 id。
第 2 步:RM 给 Client 返回该 job 资源的提交路径和作业 id。(提交路径:hdfs路径)
第 3步:Client 提交 jar 包、切片信息和配置文件到指定的资源提交路径。(也就是将这些资源提交到返回的hdfs上)
第 4 步:Client 提交完资源后,向 RM 申请运行 MrAppMaster。(MrAppMaster其实是MapReduce的ApplicationMaster实现,它使得MapReduce计算框架可以运行于YARN之上)
2.作业初始化
第 5 步:当 RM 收到 Client 的请求后,ResourceManager(RM)中的ApplicationManager(AMG)将该 job 添加到容量调度器Scheduler中;
第 6 步:scheduler返回给AMG某一个空闲的 NodeManager(NM);
第 7 步:AMG调用scheduler分配给它的NM,由该 NM 创建 Container,并产生 MRAppmaster(负责监控任务,可以查看任务的执行状态)。
第 8 步:ApplicationMaster下载客户端提交的资源文件(切片信息等),根据切片信息生成Task。
第 9 步:ApplicationMaster向RM注册。
3.任务分配
第 10 步:ApplicationMaster向 RM (Scheduler)申请运行多个 MapTask 任务资源。
第 11步:RM 将运行 MapTask 任务分配给空闲的 NodeManager,NodeManager
分别领取任务并创建容器(一个或者多个,一个Task分配一个Container)。
4.任务执行
第 12 步:ApplicationMaster通知所有接收到Task的NodeManager启动计算,NodeManager 分别启动 MapTask,MapTask 对数据分区排序;
第13步:MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。
第 14 步:ReduceTask 向 MapTask 获取相应分区的数据。
第 15 步:程序运行完毕后,结果返回给MR(MrAppMaster),之后返回给AMG,再返回给Client。最后,Applicationmaster会向 AMG申请注销自己,整个job运行结束。