目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

大数据全系列 教程

1869个小节阅读:466k

收藏
全部开发者教程

408考研

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(303)
赞(0)

2.2 Yarn工作机制

也是一个job的从提交到执行完毕的全流程,除了job本身执行以外,还有Client、RM、NodeManager、MRApplicationMaster.

img

一. 作业提交:

  1. 提交作业job后,job.waitForCompletion(true)调用monitorAndPrintJob()方法每秒轮询作业进度,如果发现自上次报告后有改变,便把进度报告给控制台。Job的submit()方法创建一个内部的JobSubmitter实例,并调用其submitJobInternal方法(步骤1)。作业完成后,如果成功,就显示计数器;如果失败,这将导致作业失败的错误记录到控制台。

JobSubmitter所实现的作业提交过程如下所述:

  1. 向资ResourceManager源管理器请求一个新作业的ID,用于MapReduce作业ID。
  2. 作业客户端检查作业的输出说明,计算输入分片splits并将作业资源(包括作业Jar包、配置文件和分片信息)复制到HDFS
  3. 通过调用资源管理器上的submitApplication()方法提交作业

二.作业初始化

  1. 资源管理器ResourceManager收到调用他的submitApplication()消息后,便将请求传递给调度器(scheduler)。调度器分配一个容器(Container),然后资源管理器在节点管理器(NodeManager)的管理下载容器中启动应用程序的master进程(步骤5a和5b)
  2. MapReduce作业的application master是一个Java应用程序,它的主类是MRAppMaster。它对作业进行初始化:通过创建多个簿记对象以保持对作业进度的跟踪,因为它将接受来自任务的进度和完成报告(步骤6)。
  3. 接下来,它接受来自共享文件系统的在客户端计算的输入分片(步骤7)。对每一个分片创建一个map任务对象以及由mapreduce. job.reduces属性确定的具体数量的reduce任务对象。

三.任务分配

  1. AppMaster为该作业中的所有map任务和reduce任务向资源管理器请求容器。

四.任务执行

  1. 一旦资源管理器的调度器为任务分配了容器,AppMaster就通过与节点管理器NodeManager通讯来启动容器(步骤9a和9b)。
  2. 该任务由主类为YarnChild的Java应用程序执行。在它允许任务之前,首先将任务需要的资源本地化,包括作业的配置、JAR文件和所有来自分布式缓存的文件.
  3. 最后运行map任务或reduce任务。

五.进度和状态更新

在YARN下运行时,任务每3秒钟通过umbilical接口向APPMaster汇报进度和状态。客户端每一秒钟(通过mapreduce.client.Progressmonitor.pollinterval设置)查询一次AppMaster以接收进度更新,通常都会向用户显示。

六.作业完成

除了向AppMaster查询进度外,客户端每5秒还通过调用Job的waitForCompletion()来检测作业是否完成。查询的间隔可以通过mapreduce.client.completion.pollinterval属性进行设置。作业完成后,AppMaster和任务容器清理器工作状态。

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2