MRv1
- 编程模型:Map阶段和Reduce阶段
- 数据处理引擎:MapTask和ReduceTask
- 运行时环境:JobTracker(资源管理和作业控制)和TaskTracker(接受JT命令并具体执行)
MRv2
- 编程模型、数据处理引擎,与MRv1是一样的
唯一不同的是运行时环境。 - MRv2是运行于YARN之上的MapReduce计算框架。
- YARN(资源管理与调度)和ApplicationMaster(作业控制)。
YARN
支持多中计算框架的资源管理器。
MRv1局限性
1、 可扩展性差,同时具备资源管理和作业控制两个功能,集群中的瓶颈。
2、 可靠性差,主从架构(Master/Slave架构),其中的主节点存在单点故障,一旦主节点出现问题,将导致集群不可用。
3、 资源利用率低,Slot资源分配模式,粗粒度的资源划分单位,通常任务不会用完一个槽的对应资源,且其他任务也无法使用这些空闲资源。
4、 无法支持多种计算框架
YARN轻量级计算平台优点
1、 资源利用率高,
2、 运维成为降低
3、 数据共享
2. YARN的设计思想
MRv1和MRv2的框架对比
MRv1和MRv2的编程模型对比
MRv1和MRv2的运行时环境对比
3. YARN的基本架构
1、YARN的基本组成结构
- ResourceManager:全局的资源管理器,负责整个集群的资源管理、分配与调度。
- Scheduler(调度器),纯调度器,默认下是Fair Scheduler
- NodeManager:对每一个slave上的资源和任务做管理
- 1) 定时的向RM汇报HearBeat(资源的使用情况和Container的运行状态)
- 2) 接受来自AM的启动/停止的请求
- Container:资源分配单位(MRv1中Slot),动态分配。
- ApplicationMaster:每个APP都会包含一个AM,AM的功能包括:
- 1) 向RM申请资源(用Container资源抽象)
- 2) 将任务做进一步的分配
- 3) 与NM通信启动/停止任务
- 4) 跟踪每一个Task的运行状态(包括Failed后的操作)
2、YARN的通信协议
1)Client与RM通信的协议,ApplicationClientProtocol,作业的提交、应用程序的状态等。
2)AM与RM通信协议,ApplicationMasterProtocol,向RM注册AM,申请资源。
3)AM与NM通信协议,ContainerManagementProtoca,启动/停止Container。
4)RM与NM通信协议,ResourceTracker,汇报slave节点的资源信息包括Container的状态(运行状况)
4. YARN的工作流程(小结)
长作业、短作业
- 短作业,作业运行几秒、几分、几小时或几天……会正常结束的作业;
- 长作业,如无意外,永远不停止的作业(服务部署,如Spark中的Master和Worker)
向YARN提交一个作业(或应用程序):YARN的运行过程:
1、启动ApplicationMaster
2、由ApplicationMaster在集群中创建应用程序,为其申请资源,监控资源使用过程
1,客户向YARN提交Application
2,RM为这个应用程序分配一个Container(某个NM上),RM要求该NM在分配的Container上启动应用程序的ApplicationMaster(AM)
3,AM向RM注册自己
4,AM向RM申请资源
5,与RM分配资源的NM通信,要求其启动Task
6,NM设置好运行环境之后启动任务
7,各Task向AM汇报进度和状态
8,程序运行完毕,AM向RM注销并关闭自己。