yarn 任务怎么获得其运行时间

2024-12-26 01:15:08
推荐回答(1个)
回答1:

第二代的mapreduce框架的TaskScheduler就是yarn

YARN的编程模型

1:保证编程模型的向下兼容性,MRv2重用了MRv1的编程模型和数据处理引擎,但运行环境被重写。

2:编程模型与数据处理引擎

mapreduce应用程序编程接口有两套:新的API(mapred)和旧的API(mapreduce)

采用MRv1旧的API编写的程序可直接运行在MRv2上

采用MRv1新的API编写的程序需要使用MRv2编程库重新编译并修改不兼容的参数 和返回值

3:运行时环境

MRv1:Jobracker和Tasktracker

MRv2:YARN和ApplicationMaster

YARN的组成

yarn主要由ResourceManager,NodeManager,ApplicationMaster和Container等几个组件组成。

ResourceManager(RM)

RM是全局资源管理器,负责整个系统的资源管理和分配。

主要由两个组件组成:调度器和应用 程序管理器(ASM)

调度器

调度器根据容量,队列等限制条件,将系统中的资源分配给各个正在运行的应用程序

不负责具体应用程序的相关工作,比如监控或跟踪状态

不负责重新启动失败任务

资源分配单位用“资源容器”resource Container表示

Container是一个动态资源分配单位,它将内存,CPU,磁盘,网络等资源封装在一起,从而限定每个任务的资源量

调度器是一个可插拔的组件,用户可以自行设计

YARN提供了多种直接可用的调度器,比如fair Scheduler和Capacity Scheduler等。

应用程序管理器

负责管理整个系统中所有应用程序

ApplicationMaster(AM)

用户提交的每个应用程序均包含一个AM

AM的主要功能

与RM调度器协商以获取资源(用Container表示)

将得到的任务进一步分配给内部的任务

与NM通信以自动/停止任务

监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务

当前YARN自带了两个AM实现

一个用于演示AM编写方法的实例程序distributedshell

一个用于Mapreduce程序---MRAppMaster

其他的计算框架对应的AM正在开发中,比如spark等。

Nodemanager(NM)和Container

NM是每个节点上的资源和任务管理器

定时向RM汇报本节点上的资源使用情况和各个Container的运行状态

接收并处理来自AM的Container启动/停止等各种要求

Container是YARN中的资源抽象,它封装了某个节点上的多维度资源

YARN会为每个任务分配一个Container,且改任务只能使用该Container中描述的资源

Container不同于MRv1的slot,它是一个动态资源划分单位,是根据应用程序的需求动态产生的