Fair Scheduler总结apache
默认公平调度调度策略仅仅基于内存资源,经过使用DRF(Dominant Resource Fairness)可以配置基于内存和CPU资源任务调度。ide
当只有一个应用运行的时候,该应用可以使用整个集群。当其余应用提交到集群,空闲出来的资源将分配给新提交的应用,这样每一个应用可以获得大体相同的资源。Hadoop默认调度器,造成一个应用的队列,如此小应用能够在一个合理时间范围内完成,而且不会让大应用长时间等待资源。这也是一个合理方式在许多用户中分享集群资源。最后,公平调度能够设置应用的优先度,设置优先度权重决定应用占用资源比例。oop
可插入策略的分层队列spa
公平调度支持分层队列,全部的队列从root队列延伸。典型的公平调度方式是把可用资源分布在可用的root队列的子队列当中。应用程序只能在叶子队列中被调度。一个队列能够被指定为其余队列的子队列。指定一个有层级的队列须要同时指定上级队列。例如 root.queue1 root.queue1.queue2。server
公平调度能够配置自定义的调度策略,好比FifiPolicy,FairSharePolicy,DominantResourceFairnessPolicyxml
使用公平调度须要在yarn-site.xml中配置以下内容队列
<property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> </property>
配置公平调度主要包含两个文件,首先是yarn-site.xml,在Hadoop配置目录下,其次须要建立一个配置文件fair-scheduler.xml,主要配置队列的权重和资源容量等。内存
<?xml version="1.0"?> <allocations> <queue name="sample_queue"> <minResources>10000 mb,0vcores</minResources> <maxResources>90000 mb,0vcores</maxResources> <maxRunningApps>50</maxRunningApps> <maxAMShare>0.1</maxAMShare> <weight>2.0</weight> <schedulingPolicy>fair</schedulingPolicy> <queue name="sample_sub_queue"> <aclSubmitApps>charlie</aclSubmitApps> <minResources>5000 mb,0vcores</minResources> </queue> </queue> <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault> <queueMaxResourcesDefault>40000 mb,0vcores</queueMaxResourcesDefault> <!-- Queue 'secondary_group_queue' is a parent queue and may have user queues under it --> <queue name="secondary_group_queue" type="parent"> <weight>3.0</weight> </queue> <user name="sample_user"> <maxRunningApps>30</maxRunningApps> </user> <userMaxAppsDefault>5</userMaxAppsDefault> <queuePlacementPolicy> <rule name="specified" /> <rule name="primaryGroup" create="false" /> <rule name="nestedUserQueue"> <rule name="secondaryGroupExistingQueue" create="false" /> </rule> <rule name="default" queue="sample_queue"/> </queuePlacementPolicy> </allocations>
队列访问控制列表hadoop
ACLs对队列进行控制,管理哪些用户能够访问特定队列。主要包括了aclSubmitApps 和aclAdministerApps配置项,每一个队列均可以配置这两个 参数。ci