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
:公平共享资源
**优势:**公平共享资源、资源抢先、基于用户或组的队列映射。