YARN的工作原理

一、YARN的组成

ResourceManagerNodeManagerJobHistoryServerContainersApplication MasterjobTaskClient组成。

ResourceManager:一个Cluster只有一个,负责资源调度、资源分配等工作。

NodeManager:运行在DataNode节点,负责启动Application和对资源的管理。

JobHistoryServer:负责查询job运行进度及元数据管理。

Containers:Container通过ResourceManager分配。包括容器的CPU、内存等资源。

Application Master:ResourceManager将任务给Application Master,然后Application Master再将任务给NodeManager。每个Application只有一个Application Master,运行在Node Manager节点,Application Master是由ResourceManager指派的。

job:是需要执行的一个工作单元:它包括输入数据、MapReduce程序和配置信息。job也可以叫作Application。

task:一个具体做Mapper或Reducer的独立的工作单元。task运行在NodeManager的Container中。

Client:一个提交给ResourceManager的一个Application程序。

YARN的工作原理_第1张图片


二、一个job运行处理的整体流程

用户向YARN中提交作业,其中包括Application Master启动、Application Master的命令及用户程序等;ResourceManager为作业分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动该作业的Application Master;Application Master首先向ResourceManager注册,这样用户可以直接通过ResourceManager查询作业的运行状态,然后它将为各个任务申请资源并监控任务的运行状态,直到任务结束。Application通过RPC请求想ResourceManager申请和领取资源。

YARN的工作原理_第2张图片

然后ApplicationMaster要求指定的NodeManager节点启动任务。

YARN的工作原理_第3张图片

启动之后,去干ResoucrceManager指定的Map task。

YARN的工作原理_第4张图片

等Map task干完之后,通知Application Master。然后Application Master去告知Resource Manager。接下来Resource Manager分配新的资源给Application Master,让它找人去干其他的活。

YARN的工作原理_第5张图片

接下来Application Master通知NodeManager启动新的Container准备干新的活,该活的输入是Map task的输出。

YARN的工作原理_第6张图片

开始干Reduce task任务。

YARN的工作原理_第7张图片

等各个节点的Reduce task都干好了,将干活的NodeManager的任务结果进行同步。做最后的Reduce任务。

YARN的工作原理_第8张图片

等计算完了,最后将最终的结果输出到HDFS。

YARN的工作原理_第9张图片

任务完成!


原文:http://davidbj.blog.51cto.com/4159484/1671064


你可能感兴趣的:(Hadoop)