YARN-1330. Fair Scheduler: defaultQueueSchedulingPolicy does not take effect (Sandy Ryza)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1534862 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d480fb0cbb
commit
6d2ef587d0
|
@ -118,6 +118,9 @@ Release 2.2.1 - UNRELEASED
|
||||||
YARN-1331. yarn.cmd exits with NoClassDefFoundError trying to run rmadmin or
|
YARN-1331. yarn.cmd exits with NoClassDefFoundError trying to run rmadmin or
|
||||||
logs. (cnauroth)
|
logs. (cnauroth)
|
||||||
|
|
||||||
|
YARN-1330. Fair Scheduler: defaultQueueSchedulingPolicy does not take effect
|
||||||
|
(Sandy Ryza)
|
||||||
|
|
||||||
Release 2.2.0 - 2013-10-13
|
Release 2.2.0 - 2013-10-13
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -378,22 +378,24 @@ public class QueueManager {
|
||||||
queueMaxAppsDefault, defaultSchedPolicy, minSharePreemptionTimeouts,
|
queueMaxAppsDefault, defaultSchedPolicy, minSharePreemptionTimeouts,
|
||||||
queueAcls, fairSharePreemptionTimeout, defaultMinSharePreemptionTimeout);
|
queueAcls, fairSharePreemptionTimeout, defaultMinSharePreemptionTimeout);
|
||||||
|
|
||||||
// Update metrics
|
// Make sure all queues exist
|
||||||
for (FSQueue queue : queues.values()) {
|
|
||||||
FSQueueMetrics queueMetrics = queue.getMetrics();
|
|
||||||
queueMetrics.setMinShare(queue.getMinShare());
|
|
||||||
queueMetrics.setMaxShare(queue.getMaxShare());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create all queus
|
|
||||||
for (String name: queueNamesInAllocFile) {
|
for (String name: queueNamesInAllocFile) {
|
||||||
getLeafQueue(name, true);
|
getLeafQueue(name, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set custom policies as specified
|
for (FSQueue queue : queues.values()) {
|
||||||
for (Map.Entry<String, SchedulingPolicy> entry : queuePolicies.entrySet()) {
|
// Update queue metrics
|
||||||
queues.get(entry.getKey()).setPolicy(entry.getValue());
|
FSQueueMetrics queueMetrics = queue.getMetrics();
|
||||||
|
queueMetrics.setMinShare(queue.getMinShare());
|
||||||
|
queueMetrics.setMaxShare(queue.getMaxShare());
|
||||||
|
// Set scheduling policies
|
||||||
|
if (queuePolicies.containsKey(queue.getName())) {
|
||||||
|
queue.setPolicy(queuePolicies.get(queue.getName()));
|
||||||
|
} else {
|
||||||
|
queue.setPolicy(SchedulingPolicy.getDefault());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,6 +88,7 @@ import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeAddedSc
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeRemovedSchedulerEvent;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeRemovedSchedulerEvent;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeUpdateSchedulerEvent;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeUpdateSchedulerEvent;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.DominantResourceFairnessPolicy;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.DominantResourceFairnessPolicy;
|
||||||
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.FairSharePolicy;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.FifoPolicy;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.FifoPolicy;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.security.QueueACLsManager;
|
import org.apache.hadoop.yarn.server.resourcemanager.security.QueueACLsManager;
|
||||||
|
@ -807,6 +808,7 @@ public class TestFairScheduler {
|
||||||
out.println("<queue name=\"queueB\">");
|
out.println("<queue name=\"queueB\">");
|
||||||
out.println("<minResources>2048mb,0vcores</minResources>");
|
out.println("<minResources>2048mb,0vcores</minResources>");
|
||||||
out.println("<aclAdministerApps>alice,bob admins</aclAdministerApps>");
|
out.println("<aclAdministerApps>alice,bob admins</aclAdministerApps>");
|
||||||
|
out.println("<schedulingPolicy>fair</schedulingPolicy>");
|
||||||
out.println("</queue>");
|
out.println("</queue>");
|
||||||
// Give queue C no minimum
|
// Give queue C no minimum
|
||||||
out.println("<queue name=\"queueC\">");
|
out.println("<queue name=\"queueC\">");
|
||||||
|
@ -833,6 +835,8 @@ public class TestFairScheduler {
|
||||||
+ "</defaultMinSharePreemptionTimeout>");
|
+ "</defaultMinSharePreemptionTimeout>");
|
||||||
// Set fair share preemption timeout to 5 minutes
|
// Set fair share preemption timeout to 5 minutes
|
||||||
out.println("<fairSharePreemptionTimeout>300</fairSharePreemptionTimeout>");
|
out.println("<fairSharePreemptionTimeout>300</fairSharePreemptionTimeout>");
|
||||||
|
// Set default scheduling policy to DRF
|
||||||
|
out.println("<defaultQueueSchedulingPolicy>drf</defaultQueueSchedulingPolicy>");
|
||||||
out.println("</allocations>");
|
out.println("</allocations>");
|
||||||
out.close();
|
out.close();
|
||||||
|
|
||||||
|
@ -894,6 +898,18 @@ public class TestFairScheduler {
|
||||||
assertEquals(120000, queueManager.getMinSharePreemptionTimeout("root.queueA"));
|
assertEquals(120000, queueManager.getMinSharePreemptionTimeout("root.queueA"));
|
||||||
assertEquals(60000, queueManager.getMinSharePreemptionTimeout("root.queueE"));
|
assertEquals(60000, queueManager.getMinSharePreemptionTimeout("root.queueE"));
|
||||||
assertEquals(300000, queueManager.getFairSharePreemptionTimeout());
|
assertEquals(300000, queueManager.getFairSharePreemptionTimeout());
|
||||||
|
|
||||||
|
// Verify existing queues have default scheduling policy
|
||||||
|
assertEquals(DominantResourceFairnessPolicy.NAME,
|
||||||
|
queueManager.getQueue("root").getPolicy().getName());
|
||||||
|
assertEquals(DominantResourceFairnessPolicy.NAME,
|
||||||
|
queueManager.getQueue("root.queueA").getPolicy().getName());
|
||||||
|
// Verify default is overriden if specified explicitly
|
||||||
|
assertEquals(FairSharePolicy.NAME,
|
||||||
|
queueManager.getQueue("root.queueB").getPolicy().getName());
|
||||||
|
// Verify new queue gets default scheduling policy
|
||||||
|
assertEquals(DominantResourceFairnessPolicy.NAME,
|
||||||
|
queueManager.getLeafQueue("root.newqueue", true).getPolicy().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue