《Hadoop权威指南:大数据的存储与分析》—4.3.5 主导资源公平性
4.3.5 主导资源公平性
对于单一类型资源,如内存的调度,容量或公平性的概念很容易确定。例如两个用户正在运行应用,可以通过度量每个应用使用的内存来比较两个应用。然而,当有多种资源类型需要调度时,事情就会变得复杂。例如,如果一个用户的应用对CPU的需求量很大,但对内存的需求量很少;而另一个用户需要很少的CPU,但对内存需求量很大,那么如何比较这两个应用呢?
YARN中调度器解决这个问题的思路是,观察每个用户的主导资源,并将其作为对集群资源使用的一个度量。这个方法称为 “主导资源公平性”(Dominant Resource Fairness,DRF)[1]。这个思想用一个简单的例子就可以很好的给予解释。
想象一个总共有100个CPU和10TB的集群 。应用A请求的每份容器资源为2个CPU和300GB内存,应用B请求的每份容器资源为6个CPU和100GB内存。A请求的资源在集群资源中占比分别为2%和3%,由于内存占比(3%)大于CPU占比(2%),所以内存是A的主导资源。B请求的资源在集群资源中占比分别为6%和1%,所以CPU是B的主导资源。由于B申请的资源是A的两倍(6% vs3%),所以在公平调度下,B将分到一半的容器数。
默认情况下不用DRF,因此在资源计算期间,只需要考虑内存,不必考虑CPU。对容量调度器进行配置后,可以使用DRF,将capacity-scheduler.xml文件中的org.apache.hadoop.yarn.util.resource.DominantResourceCalculator设为yarn.scheduler.capacity.resource-calculator 即可。
公平调度器若要使用DRF,通过将分配文件中的顶层元素defaultQueue SchedulingPolicy设为drf即可。
- 点赞
- 收藏
- 关注作者
评论(0)