博学谷提供支持
Fair Scheduler是由Facebook贡献的,是Hadoop上一个可插拔式的调度器,允许YARN应用程序在一个大的集群上公平地共享资源。
公平调度是一种为应用程序分配资源的方法,这样随着时间的推移,所有的应用程序通常都能获得等同的资源份额。
现在YARN能够调度多种资源类型,默认情况下,FairScheduler以内存资源为根据来公平调度。
也可以通过配置支持内存和CPU两种资源,通过Ghodsi等人提出的DRF(Dominant Resource Fairness)策略调度。
当只有一个应用程序在运行时,这个应用程序使用整个集群。
当提交其他的应用程序时,已释放的资源就会被分配给新的应用程序,因此每个应用程序最后都能粗略地获得等量的资源。
与Hadoop默认的调度器维护一个作业队列不同,这个特性让耗时较短的应用程序在合理的时间内完成的同时又不“饿”到耗时较长的应用程序。
它也是一个在多用户间共享集群的有效方法。
最后,公平共享支持应用程序优先级——优先级像权重一样决定每个应用程序应该获得的整体资源的比例。
Fair Scheduler按队列来组织应用程序,这些队列公平地共享资源。默认情况下,所有的用户共享一个单一的队列——default。
如果一个应用程序,在它的资源请求中特别指定一个队列,这个请求就会被提交到相应的队列去。通过配置,还可以支持分配基于包含在请求中用户名的队列。
在每个队列内,使用一个调度策略在运行中的应用程序间共享资源。
默认使用的是基于内存的公平调度策略,但是也可以配置FIFO和使用DRF的多资源调度策略。
Fair Scheduler中队列也是按层级组织来划分资源的,加以分配权重来按一定的比例共享集群。
Fair Scheduler除了支持公平调度外,还允许为队列分配有保证的最小份额,