目前,Hadoop 作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.1.3 默认的资源调度器是 Capacity Scheduler。 CDH 框架默认调度器是 Fair Scheduler。不同的设置可以在yarn-default.xml文件中查看。
1、先进先出调度器(FIFO)
FIFO 调度器(First In First Out):单队列,根据提交作业的先后顺序,先来先服务。但是,不支持多队列,生产环境下很少使用。
2、容量调度器(Capacity Scheduler)
Capacity Scheduler 是 Yahoo 开发的多用户调度器。主要特点是:
1、多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略。
2、容量保证:管理员可为每个队列设置资源最低保证和资源使用上限。
3、灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用 程序提交,则其他队列借调的资源会归还给该队列。
4、多租户: 支持多用户共享集群和多应用程序同时运行。 为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。
容量调度器资源分配算法:
3、公平调度器(Fair Scheduler)
Fair Schedulere 是 Facebook 开发的多用户调度器。
与容量调度器的相同点:多队列:支持多队列多作业;容量保证:管理员可为每个队列设置资源最低保证和资源使用上线;灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。多租户:支持多用户共享集群和多应用程序同时运行;为了防止同一个用户的作业独占队列中的资源,该调度器 会对同一用户提交的作业所占资源量进行限定。
与容量调度器不同点:核心调度策略不同 容量调度器:优先选择资源利用率低的队列 公平调度器:优先选择对资源的缺额比例大的;每个队列可以单独设置资源分配方式 容量调度器:FIFO、 DRF 公平调度器:FIFO、FAIR、DRF。
对于缺额问题:
注:公平调度器设计目标是:在时间尺度上,所有作业获得公平的资源。某一 时刻一个作业应获资源和实际获取资源的差距叫“缺额”。一个新加入的任务来说,公平调度器并不是将资源公平的分配给每一个任务,而是会优先为缺额大的作业分配资源。
公平调度器队列资源分配方式
公平调度器资源分配算法
公平调度器队列资源分配方式