基于Yarn的MapReduce架构
1.MapReduce程序是基于Mapper和Reducer两大阶段构成的,其中Mapper是把一个计算任务分成很多小任务进行并行计算,Reducer是做最后的统计工作的;
2.Hadoop2.x开始MapReduce的运行是基于Yarn进行的:
3.当ResourceManager接受到Client提交程序的请求的时候,会根据集群资源的状况在每个NodeManager所在的节点上命令Nodemanager来启动该程序的第一个Container,该Container(Container是CPU、内存资源的封装)就是该程序ApplicationMaster,负责该程序的任务调度的执行过程,ApplicationMaster转过来向ResourceManager注册自己,注册之后会向ResourceManager申请具体的Container计算资源,如果资源(Container)充足,可以一次分配,如果资源(Container)不够,ResourceManager发现有可用资源就会再次分配;
4.如何知道一个程序中的ApplicationMaster需要多少个Container?ApplicationMaster在启动的时候会运行程序的main方法,该方法中会有数据的输入和相关的配置,通过这些内容就可以知道需要多少Container;
5.MapReduce运行在Yarn上的总结
主从结构
主节点,只有一个:ResourceManager
控制节点,每一个job都有一个MRAppMaster
从节点,有多个:YarnChild
ResourceManager负责:
负责每一个job执行的任务调度
把job分给MRAppMaster执行
监控MRAPPMaster的执行情况
MRAppMaster负责
负责每一个job执行的任务调度
把job分给YarnChild执行
监控YarnChild的执行情况
YarnChild负责
执行MRAppMaster分配的计算任务
6.Hadoop中的MapReduce中的MRAppMaster相当于Spark中的Driver,Hadoop MapReduce中的YarnChild相当于Spark中的CoarseGrainedExecutorBackend;