Hadoop——YARN
MapReduce1
-
架构
-
工作流程
-
局限性
JobTracker有多忙?
- 作业调度(任务安排给TaskTracker)
- 任务进度监控(跟踪任务、重启失败的任务;记录任务流水)
-
JobTracker访问压力大,影响系统扩展性,不适合所有大型计算。主要表现在大型集群上。官方称当节点数达到4000,任务数达到40000,MapReduce会遇到可扩展瓶颈
-
难以支持除MapReduce以外的框架,如Spark、Storm等。
-
JobTracker单点故障(因为Hadoop1.0的本身就有单点故障)。
MapReduce2
可以理解为 MapReduce2 = MapReduce1 +YARN
-
什么是YARN
- YARN(Yet Another Resource Negotiator)另一种资源协调者,也就是资源调度框架
- 最初是为了改善MapReduce的实现,但也是一种资源调度框架,具有通用性,可为上层应用提供统一的资源管理和调度,可以支持其他的分布式计算模式(Spark)
- 它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
-
Hadoop生态圈
Yarn架构
- Container(容器)
Container是Yarn中资源的抽象,它封装了某个节点上的多维度资源。
-
ResouceManager(资源管理器)
负责整个系统的资源分配和管理,是一个全局的资源管理器。由调度器和应用程序管理器组成
-
调度器(Scheduler)
调度器根据资源情况为应用程序分配封装在Container中的资源
-
应用程序管理器(Application Manager)
应用程序管理器负责管理整个系统中所有应用程序
-
-
NodeManager(节点管理器)
NodeManager是每个节点上的资源和任务管理器
- 定时向ResouceManager汇报本节点上的资源使用情况和各个Container的运行状态
- 接受并处理来自ApplicationManager的Container启动/停止等请求。
-
ApplicationMaster(主应用)
ApplicationMaster是一个详细的框架库,它结合从ResourceManager获得的资源和NodeManager协同工作来运行和监控任务
用户提交的每一个应用程序均包含一个ApplicationMaster
- 与ResourceManager调度器协商以获取抽象资源(Container)
- 负责应用的监控、跟踪应用执行状态、重启失败任务等
- 并与NodeManager协同工作完成Task的执行和监控
-
应用(Application)运行机制(流程)
-
任务进度监控
-
MapReduce1和YARN组成的对比
分工 MapReduce1 YARN ①作业调度
②任务进度监控
(跟踪任务、重启失败的任务、记录任务流水)JobTracker ResourceManager → 作业调度
Application Master → 任务进度监控任务执行(或结点资源管理) TaskTracker NodeManager 资源调配单元(CPU、内存等) Slot(槽) Container(容器) -
YARN对MapReduce运行性能提升
- 主要特点:ResourceManager与Application Master分离
- 性能提升:可以扩展支持1W个节点,10W个任务
YARN调度器
假如一个工厂接到了很多订单,第一个订单是1W件,第二个订单是50件,第三个订单是4k件...等等。工厂的工人是有限的,应该采用什么策略来安排达到资源利用率最高?这就是调度器所考虑的。
-
FIFO Scheduler (先进先出调度器)
-
最简单的调度器
-
job1运行完后,job2才能获取到资源
-
-
Capacity Scheduler
-
分成多个队列,每个队列占用一定资源。可以看作是FIFO Scheduler的多队列版本
-
每个队列可以限制资源使用量。但是,队列间的资源分配以使用量作排列依据,使得容量小的队列由竞争优势。
-
如果不限制某队列的最大容量,则运行过程中,它可以占用全部资源。
-
YARN默认采用Capacity Scheduler调度器
-
-
Fair Scheduler
- 刚开始job1占用100%资源
- job2提交后,job1、job2各占50%资源
- job2运行完后,job1又占100%
-
三种调度器比较
调度器 工作方法 FIFO Scheduler ①单队列
②先进先出的原则Capacity Scheduler ①多队列
②计算能力调度器,选择资源使用量占用最小、优先级高的先执行
③多用户情况下,可以最大化集群的吞吐和利用率Fair Scheduler ①多队列
②公平调度,所有的job具有相同的资源