在我们的ResourceManager中,存在调度器。
所谓的调度器,其实就是协调各个任务之间的资源的。
job1 job2 job3 每个任务都是有大有小,有些大任务可能需要运行几天,有些小任务,可能运行1分钟就结束。此时多个任务同时执行,资源如何协调,这就是调度器的作用。
1、FIFO Scheduler(FIFO调度器)
FIFO = first input first output (先进先出)
FIFO 为 First Input First Output 的缩写,先进先出。FIFO 调度器将应用放在一个队列中,按照先 后顺序
2、Capacity Scheduler(容量调度器,apache版本默认使用的调度器)
专门留了一部分资源给小任务,可以在执行job1的同时,不会阻塞job2的执行,但是因为这部分资源是一直保留给其他任务的,所以就算只有一个任务,也无法为其分配全部资源,只能让这部分保留资源闲置着,有着一定的资源浪费问题。
3、Fair Scheduler(公平调度器,CDH版本的hadoop默认使用的调度器)
hadoop版本有三种:第一种是Apache版本,CDH版本、HotonWorks版本。
公平调度器的目的就是为所有运行的应用公平分配资源。使用公平调度器时,不需要预留一定量的资源,因为调度器会在所有运行的作业之间动态平衡资源,第一个(大)作业启动时,它也是唯一运行的作业,因而获得集群中的所有资源,当第二个(小)作业启动时,它被分配到集群的一半资源,这样每个作业都能公平共享资源。