1. MapReduce
概述:
- 一个最终完整版本的MR程序需要
用户编写的代码和Hadoop自己实现的代码整合在一起才可以; - 其中用户负责map、reduce两个阶段的业务问题,Hadoop负责底层所有的技术问题;
MapReduce核心思绪:先分再合,分而治之,主要目的:并行运行任务,提高效率。  注意: 不可拆分的计算任务或相互间有依赖关系的数据无法并行计算: 
MapReduce特点:
易于编程:简单的接口就可以完成分布式程序;良好的扩展性:MR的分布式计算的特点可以随节点数据增长保持近似于线性增长,增加机器,就可以可以处理海量数据;高容错性:离线计算:实时计算性能差:不能进行流行计算:
MapReduce实例: 一个完整的MapReduce程序在分布式运行时有三类
MRAppMaster:负责整个MR程序的过程调度及状态协调MapTask:负责map阶段的整个数据处理流程ReduceTask :负责reduce阶段的整个数据处理流程
MaprReduce的阶段组成:
- 一个MapReduce编程模型中只能包含
一个Map阶段和一个Reduce阶段,或者只有Map阶段; - 不能有诸如多个map阶段、多个reduce阶段的情景出现;
- 如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序串行运行。

2. YARN
YARN概述:YARN是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。
YARN功能说明:
资源管理系统︰集群的硬件资源,和程序运行相关,比如内存、CPU等。调度平台∶多个程序同时申请计算资源如何分配,调度的规则(算法)。通用∶不仅仅支持MapReduce程序,理论上支持各种计算程序。YARN不关心你干什么,只关心你要资源,在有的情况下给你,用完之后还我。
YARN架构图: 
ResourceManager ( RM ) YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者。接收用户的作业提交,并通过NM分配、管理各个机器上的计算资源。NodeManager (NM ) YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源。根据RM命令,启动Container容器、监视容器的资源使用情况。并且向RM主角色汇报资源使用情况。ApplicationMaster ( AM ) 用户提交的每个应用程序均包含一个AM. 应用程序内的“老大”,负责程序内部各阶段的资源申请,监督程序的执行情况。
YARN的三种调度策略:
FIFO sheduler: 先进先出 优势:无需配置,先到先得,易于执行。 坏处:任务的优先级不会变高,因此高优先级的作业需要等待不适合共享集群。

Capacity scheduler:为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源。(YARN的默认调度器) 优势: 层次化的队列设计、容量保证、安全、弹性分配。 坏处:不能公平的分配资源。

Fair Scheduler:公平共享资源 **优势:**公平共享资源、资源抢先、基于用户或组的队列映射。 
参考: https://www.bilibili.com/video/BV1CU4y1N7Sh?p=39&spm_id_from=pageDriver
|