浅谈MapReduce作业提交流程

YARN:解耦资源与计算

ResourceManager
主,核心
集群节点资源管理
NodeManager
与RM汇报资源
管理Container生命周期
计算框架中的角色都以Container表示
Container:【节点NM,CPU,MEM,I/O大小,启动命令】
默认NodeManager启动线程监控Container大小,超出申请资源额度,kill
支持Linux内核的Cgroup

MR :

MR-ApplicationMaster-Container
作业为单位,避免单点故障,负载到不同的节点
创建Task需要和RM申请资源(Container)
Task-Container

Client:

**RM-Client:**请求资源创建AM
**AM-Client:**与AM交互

基本功能模块

YARN:负责资源管理和调度
MRAppMaster:负责任务切分、任务调度、任务监控和容错等
MapTask/ReduceTask:任务驱动引擎,与MRv1一致

每个MapRduce作业对应一个MRAppMaster

MRAppMaster任务调度
YARN将资源分配给MRAppMaster
MRAppMaster进一步将资源分配给内部的任务

MRAppMaster容错

失败后,由YARN重新启动
任务失败后,MRAppMaster重新申请资源

*** *** *** *** *** *** *** ***

过程:

1、客户端,提交MapReduce作业
2、YARN的资源管理器(Resource Manager),协调集群中计算资源的分配
3、YARN的节点管理器(Node Manager),启动并监控集群中的计算容器
4、MapReduce的Application Master,协调MapReduce作业中任务的运行。Application Master和MapReduce任务运行于容器中,这些容器由resourcemanager调度,由nodemanager管理。
5、分布式文件系统(一般是HDFS),在组件之间共享作业数据。
JobSubmitter实现的作业提交的过程有如下几个步骤:
1、向resourcemanager申请一个新的application ID,用于MapReduce作业的ID
2、检查作业的输出。如果没有指定输出或者输出路径已经存在,则不提交作业,MapReduce程序抛异常
3、计算作业的输入切片。如果不能计算切片(比如输入路径不存在等),不提交作业,MR程序抛异常。
4、拷贝执行作业需要的资源到共享文件系统的以作业ID命名的目录中,这些资源包括作业的jar包,配置文件,计算好的输入切片。作业的jar包有一个很高的副本数量(mapreduce.client.submit.file.replication指定,默认值是10),这样当nodemanager如果运行作业中的任务,会有很多副本可以访问。
5、调用resourcemanager的submitApplication方法提交作业。

在这里插入图片描述未完待续,日后补充…

猜你喜欢

转载自blog.csdn.net/s_pr1te/article/details/89207776