一、YARN的组成
由ResourceManager、NodeManager、JobHistoryServer、Containers、Application Master、job、Task、Client组成。
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程序。
二、一个job运行处理的整体流程
用户向YARN中提交作业,其中包括Application Master启动、Application Master的命令及用户程序等;ResourceManager为作业分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动该作业的Application Master;Application Master首先向ResourceManager注册,这样用户可以直接通过ResourceManager查询作业的运行状态,然后它将为各个任务申请资源并监控任务的运行状态,直到任务结束。Application通过RPC请求想ResourceManager申请和领取资源。
然后ApplicationMaster要求指定的NodeManager节点启动任务。
启动之后,去干ResoucrceManager指定的Map task。
等Map task干完之后,通知Application Master。然后Application Master去告知Resource Manager。接下来Resource Manager分配新的资源给Application Master,让它找人去干其他的活。
接下来Application Master通知NodeManager启动新的Container准备干新的活,该活的输入是Map task的输出。
开始干Reduce task任务。
等各个节点的Reduce task都干好了,将干活的NodeManager的任务结果进行同步。做最后的Reduce任务。
等计算完了,最后将最终的结果输出到HDFS。
任务完成!
原文:http://davidbj.blog.51cto.com/4159484/1671064