YARN的Fair Scheduler和Capacity Scheduler

时间:2021-03-22 14:38:23

关于Scheduler

  YARN有四种调度机制:Fair Schedule,Capacity Schedule,FIFO以及Priority;
  其中Fair Scheduler是资源池机制,进入到里面的应用是共享pool里面的资源;只有当资源配比发生紧张的时候,才会根据权重来进行调整;
  Capacity则是基于队列的,每个队列都会被分配资源比例,这种资源比例是固定;所以没有资源共享的概念
  MapR,cloudera都是默认采用Fair Scheduler,Ambari(Hortonwork)默认使用Capacity Scheduler;
  Fair Scheduler是一个池子的概念,就是来了一个应用就扔到这个池子里面,大家共享这个池子里面的资源;Fair Scheduler提供了一种Weigth的概念,就是比重,最后鬼根据比重来为各个池子分配资源(本质和Capacity里面的capacity一样);同时她还提供了max resource,min resource的可选配置,就是制定资源下限和上限;这个属性的配置是可以覆盖weigth(权重)的。但是并不推荐使用max min资源配置,因为不够灵活;
  Capacity Scheduler是一个队列概念,来了一个应用,如果发现资源不够了,则根据FIFO规则排队;什么时候资源够了,再用。
  Fair Scheduler可以配置自动创建pool,但是Capacity则无法创建队列;其实本质差别就是在于一个是pool共享资源的概念(YARN-3319),一个是queue队列形式利用资源。或者这么解释,对于Faire而言,可以使用资源池中未被使用的资源,但是Capacity则不允许;所以前者比较灵活,后者相对古板。但是通过看到Capacity有计划也实现一版fairness appliction;如果真是这样,那么两者区别就变得很小了。

参考文章
  https://people.csail.mit.edu/matei/talks/2009/hadoop_summit_fair_scheduler.pdf
  https://www.quora.com/On-what-basis-do-I-decide-between-Fair-and-Capacity-Scheduler-in-YARN
  https://www.quora.com/Apache-Hadoop-Whats-the-difference-between-Fair-Scheduler-and-Capacity-Scheduler

备注

  我发现https://www.quora.com/是一个很牛逼的网站,在浏览关于YARN调度器差别的时候,发现回帖的都是apache里面的人!