目录
一、为什么要使用资源调度系统Yarn
这还要从Hadoop1.0说起,关于Hadoop1.0 的架构这里就不多做介绍了,感兴趣的同学自行了解一下。在Hadoop1.0 中,MR 作业的调度还是有两个重要的组件:JobTracker 和 TaskTracker,随着集群规模增加,单点故障,负载过重,利群利用率低的问题凸显了出来。
Hadoop 2.0 中下一代 MR 框架的基本设计思想就是将 JobTracker 的两个主要功能,资源管理和作业控制(包括作业监控、容错等),分拆成两个独立的进程。资源管理与具体的应用程序无关,它负责整个集群的资源(内存、CPU、磁盘等)管理,而作业控制进程则是直接与应用程序相关的模块,且每个作业控制进程只负责管理一个作业,这样就是 YARN 诞生的背景,它是在 MapReduce 框架上衍生出的一个资源统一的管理平台。
- 在大数据生态系统中,根据业务场景的不同,有不同的处理系统,比如离线批处理MapReduce实时流计算使用Spark等,不同的计算框架都需要对执行任务进行资源的调度。如果选用每一种框架都搭建一个集群,那么就需要多个专门的人员来维护这些集群系统。
- 而使用Yarn资源调度共享之后,就可以减少维护成本,少量的人员就可以对多种集群系统进行管理
- 数据共享:随者数据的暴增,数据如果存储在不同的系统中,当计算的程序和要处理的数据不在同一个集群中,那么就涉及到了跨集群的移动数据,在移动数据的过程中,不仅需要花费很长的时间,而且硬件从成本也会增加。而共享集群模式可以让多种框架共享数据和硬件资源,将大大减少数据移动动带来的成本。
- 资源的共享:像离线批处理任务一般是在凌晨执行,白天的资源利用率很低,这样就使得资源的使用有明显的波峰和波谷现象;如果是交互式数据分析任务,对资源的使用主要集中在工作日的上班时间段;还有实时流计算,算法模型训练等各种类型的计算任务需要不同的CPU,内存等计算资源。如果能够根据不同类型的计算任务的特点合理的共享集群资源,不但能够减少硬件成本,而且也能够减少资源的利用率。
由于Hadoop的发展,很多公司的数据都存储在了HDFS上,而在Hadoop2.0之前是没有提供统一资源调度系统的,并且只能处理MapReduce任务,其他类型的计算任务需求不能够满足,所以在Haoop2.0的时候推出了Yarn(Yet Another Resource Negotiator)
二、Yarn的主要功能
- 作为集群的资源管理系统
- 负责集群的统一管理和调度
- 与客户端交互,处理客户端的计算任务请求
三、Yarn组件
3.1 ResourceManager(RM)
3.1.1 ResourceManager(RM)介绍
RM 是一个全局的资源管理器,负责整个系统的资源管理和分配,它主要有两个组件构成:
-
调度器:Scheduler;
-
应用程序管理器:Applications Manager,ASM。
Scheduler(调度器)