MapReduce计算框架
将计算过程分为两个阶段:Map和Reduce
Map阶段并行处理输入数据;
Reduce阶段对Map结果进行汇总
Shuffle连接Map和Reduce两个阶段
Map Task将数据写到本地磁盘;
Reduce Task从每个Map Task上读取一份数据;
仅适合离线批处理
具有较好的容错性和扩展性;
适合批处理任务;
缺点:
启动Map/Reduce任务开销大、过多使用磁盘导致IO频繁等;
MapReduce On YARN(MRv2)
YARN负责资源管理和调度;ApplicationMaster负责任务管理;
MRAppMaster任务调度:
1)YARN将资源分配给MRAppMaster;
2)MRAppMaster进一步将资源分配给内部的任务;
MRAppMaster容错:
1)MRAppMaster失败后,由YARN重新启动;
2)任务失败后,MRAppMaster重新申请资源;
MapReduce On YARN工作原理
1)用户向YARN中提交应用程序/作业,其中包括ApplicaitonMaster程序、启动ApplicationMaster的命令、用户程序等;
2)ResourceManager为作业分配第一个Container,并与对应的NodeManager通信,要求它在这个Containter中启动该作业的ApplicationMaster;
3)ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查询作业的运行状态;然后它将为各个任务申请资源并监控任务的运行状态,直到运行结束。即重复步骤4-7;
4)ApplicationMaster采用轮询的方式通过RPC请求向ResourceManager申请和领取资源;
5)一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务;
6)NodeManager启动任务;
7)各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicaitonMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务;
在作业运行过程中,用户可随时通过RPC向ApplicationMaster查询作业当前运行状态;
8)作业完成后,ApplicationMaster向ResourceManager注销并关闭自己;