Mapreduce 作业

作业的提交

创建内部的jobsubmiter实例来提交作业,具体步骤

1.向资源管理器 resource manager请求应用ID作为作业ID

2.检查作业的输出说明,如指定输出目录等

3.计算作业的输入分片,对文件的分片

4.将运行作业所需要的资源,如文件分片,jar文件等,复制到一个以作业ID为目录下的共享文件系统中,调用submitapplication()提交作业,调用资源管理器

作业初始化

1.资源管理器收到submitapplycation()调用后,将请求传给yarn调度器

2.调度器分配容器container,然后资源管理器在container中执行application mater进程,接收来自任务的进度和报告。

3.application master 接受来自共享文件系统的文件分片,来确定对每个分片创建一个map任务以及reduce任务,分配任务ID

4.在运行任务之前,调用setupjob()设置作业最终输出目录及任务最终输出目录

任务分配

1.为所有map和reduce任务想资源管理器申请container,优先请求map任务容器,

2.确定cpu和内存需求,设计参数 mapreduce.map.memory.mb mapreduce.reduce.memory.mb内存 mapreduce.map.cpu.vcores mapreduce.reduce.cpu.vcoresp.memory.mb CPU

任务的执行

1.为任务分配完container,application mater与节点管理器通信来启动container

2.任务所需资源本地化,然后运行map或者reduce任务。

任务进度和状态更新

任务在运行时,需要对进度保持跟踪。对于map任务而言,任务进度是已处理输入的所占百分比,reduce而言是系统计算的已处理输入所占百分比。

计数器:负责对任务进行过程中各个时间的计数,如输入行数等,通过每秒轮询application mater获取。

作业完成

1.application master收到最后一个任务完成通知后,将作业状态置为成功,将信息输出到控制台

2.application master和container 清理工作状态,将中间输出删除,作业日志被记录被存档以便日后查询

你可能感兴趣的:(Mapreduce 作业)