公平调度器总结
默认公平调度调度策略仅仅基于内存资源,通过使用DRF(主导资源公平)能够配置基于内存和CPU资源任务调度。
当只有一个应用运行的时候,该应用能够使用整个集群。当其他应用提交到集群,空闲出来的资源将分配给新提交的应用,这样每个应用能够得到大致相同的资源.Hadoop默认调度器,形成一个应用的队列,如此小应用可以在一个合理时间范围内完成,并且不会让大应用长时间等待资源。这也是一个合理方式在许多用户中分享集群资源。最后,公平调度可以设置应用的优先度,设置优先度权重决定应用占用资源比例。
公平调度支持分层队列,所有的队列从根队列延伸。典型的公平调度方式是把可用资源分布在可用的根队列的子队列当中。应用程序只能在叶子队列中被调度。一个队列可以被指定为其他队列的子队列。指定一个有层级的队列需要同时指定上级队列。例如根。queue1,root.queue1.queue2 .
公平调度可以配置自定义的调度策略,比如FifiPolicy, FairSharePolicy, DominantResourceFairnessPolicy
使用公平调度需要在yarn-site。xml中配置如下内容
& lt; property> & lt;才能name> yarn.resourcemanager.scheduler.class</name> & lt;才能value> org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> & lt;/property>
& lt; ? xml version=" 1.0 " ?比; & lt; allocations> & lt;才能queue name=皊ample_queue”比; ,,,& lt; minResources> 10000, mb, 0 vcores ,,,& lt; maxResources> 90000, mb, 0 vcores ,,,& lt; maxRunningApps> 50 & lt;/maxRunningApps> ,,,& lt; maxAMShare> 0.1 & lt;/maxAMShare> ,,,& lt; weight> 2.0 & lt;/weight> ,,,& lt; schedulingPolicy> fair ,,,& lt; queue name=皊ample_sub_queue”比; ,,,,,& lt; aclSubmitApps> charlie ,,,,,& lt; minResources> 5000年,mb, 0 vcores ,,,& lt;/queue> & lt;才能/queue> & lt;才能queueMaxAMShareDefault> 0.5 & lt;/queueMaxAMShareDefault> & lt;才能queueMaxResourcesDefault> 40000, mb, 0 vcores & lt;才能!——,Queue “secondary_group_queue”, is a parent Queue 以及may ,,,,,,user queues under it ——比; & lt;才能queue name=" secondary_group_queue ",类型=案浮北? & lt;才能weight> 3.0 & lt;/weight> & lt;才能/queue> & lt;才能user name=皊ample_user”比; ,,,& lt; maxRunningApps> 30 & lt;/maxRunningApps> & lt;才能/user> & lt;才能userMaxAppsDefault> 5 & lt;/userMaxAppsDefault> & lt;才能queuePlacementPolicy> ,,,& lt; rule name=爸付ā?/比; ,,,& lt; rule name=" primaryGroup ",创造=癴alse”,/比; ,,,& lt; rule name=皀estedUserQueue”比; ,,,,,,,& lt; rule name=" secondaryGroupExistingQueue ",创造=癴alse”,/比; ,,,& lt;/rule> ,,,& lt; rule name=澳稀?队列=" sample_queue "/比; & lt;才能/queuePlacementPolicy> & lt;/allocations>
aclSubmitApps和aclAdministerApps配置项,每个队列都可以配置这两个参数。