目录
一、什么是Scheduler(调度器)
Scheduler即调度器,根据容量、队列等限制条件(如每个队列分配⼀定的资源,最多执⾏⼀定数量的作业等),将系统中的资源分配给各个正在运⾏的应⽤程序。
要想给任务分配container容器的数量的话,肯定是需要一个东西给这个任务分配对应的数量的container,这个就是调度器
首先是要知道的调度器(scheduler)是resourcemanager的一个组件调度器根据容量,队列等限制条件,将系统中的资源分配给各个正在运行的程序,调度器仅根据各个应用程序的资源需求进行资源分配,资源分配的单位是container,从而限定每个任务使用的资源
二、调度器种类
FIFO Scheduler 先进先出调度器
Capacity Scheduler 容量调度器
FairScheduler 公平调度器
2.1FIFO Scheduler(FIFO调度器)
FIFO 为
First Input First Output
的缩写,先进先出。
FIFO
调度器将应⽤放 在⼀个队列中,按照先 后顺序 运⾏应⽤。这种策略较为简单,但不适合共享集群,因为⼤的应⽤会占⽤集群的所资源,每个应⽤必须等待直到轮到⾃⼰。
优点
:简单易懂,不需要任何配置
缺点
:不适合共享集群,⼤的应⽤会占据集群中的所有资源,所以每个应⽤都必须等待,直到轮到⾃⼰执⾏。
如图所示,只有当job1全部执⾏完毕,才能开始执⾏job2
2.2Capacity Scheduler(容量调度器)
容量调度器 Capacity Scheduler
允许多个组织共享⼀个
Hadoop
集群。使⽤容量 调度器时,⼀个独⽴的专⻔队列保证⼩作业⼀提交就可以启动。
优点
:⼩任务不会因为前⾯有⼤任务在执⾏,⽽只能⼀直等下去
缺点
:这种策略是以整个集群利⽤率为代价的,这意味着与使⽤
FIFO
调度器相⽐,⼤作
业执⾏的时间要⻓上⼀些。
如图所示,专⻔留了⼀部分资源给⼩任务,可以在执⾏job1的同时,不会阻塞job2的 执⾏,但是因为这部分资源是⼀直保留给其他任务的,所以就算只有⼀个任务,也⽆法为其分配全部资源,只能让这部分保留资源闲置着,有着⼀定的资源浪费问题。
3.3Fair Scheduler(公平调度器)
公平调度器的⽬的就是为所有运⾏的应⽤公平分配资源。使⽤公平调度器时,不需要预留⼀定量的资源,因为调度器会在所有运⾏的作业之间动态平衡资源,第⼀个(⼤)作业启动时,它也是唯⼀运⾏的作业,因⽽获得集群中的所有 资源,当第⼆个(⼩)作业启动时,它被分配到集群的⼀半资源,这样每个作业都能公平 共享资源。
如图所示,就像是把好⼏个任务拼接成了⼀个任务,可以充分利⽤资源,同时⼜不会因为⼤任务在前⾯执⾏⽽导致⼩任务⼀直⽆法完成
这也是企业最常用的一种