Hadoop之MapReduce任务执行流程
图中名词的解析
1.job
表示一个MapReduce作业,负责监控作业的运行状态,它维护了一个作业的状态机,以实现异步执行各种作业相关操作
2.Task
表示一个MapReduce作业的某个任务,负责监控一个任务的运行状态。它维护了一个任务状态机,以实现各种任务相关的操作
3.MRAppMaster
MRAppMaster是MapReduce的ApplicationMaster实现,它使得Map
Reduce可以直接运行在YARN上,它主要作用在于管理作业的生命周期:
1.1作业的管理:作业的创建,初始化以及启动等
1.2向RM申请资源和再分配资源
1.3Container的启动与释放
1.4监控作业运行状态
1.5作业恢复
4.ResourcesManager
- 与客户端进行交互,处理来自于客户端的请求,如查询应用的运行情况等。
- 启动和管理各个应用的ApplicationMaster,并且为ApplicationMaster申请第一个Container用于启动和在它运行失败时将它重新启动。
- 管理NodeManager,接收来自NodeManager的资源和节点健康情况汇报,并向NodeManager下达管理资源命令,例如kill掉某个container。
- 资源管理和调度,接收来自ApplicationMaster的资源申请,并且为其进行分配。这个是它的最重要的职能。
5.NodeManager
NodeManager是运行在单个节点上的代理,它管理Hadoop集群中单个计算节点,功能包括与ResourceManager保持通信,管理Container的生命周期、监控每个Container的资源使用(内存、CPU等)情况、追踪节点健康状况、管理日志和不同应用程序用到的附属服务等。
6.YarnChild
MrAppmaster运行程序时向resouce manager 请求的maptask/reduceTask。也是运行程序的容器。其实它就是一个运行程序的进程。
MapReduce的任务执行流程简述
1.run job 运行任务
2.向ResourcesManager发送请求,接收jobid任务编号
3.将作业运行需要的资源复制到文件系统
4.将任务提交给resourcesManager
5.启动container容器
6.初始化AppMaster(使得MapReduce程序可以运行在YARN中,主要作用管理作业的声明周期)
7.AppMaster接受分片信息
8.AppMaster向resourceManager请求分配资源
9.在指定的NodeManager上启动计算容器
10.NodeManager启动YarnChild接受(jar\配置\数据)
11.Yarchild运行Maptask和ReduceTask
12.Yarnchild监控Maptask和ReduceTask并向AppMaster汇报运行状态