YARN-2539. FairScheduler: Set the default value for maxAMShare to 0.5. (Wei Yan via kasha)
This commit is contained in:
parent
23e17ce0ff
commit
43efdd30b5
@ -241,6 +241,9 @@ Release 2.6.0 - UNRELEASED
|
|||||||
YARN-1372. Ensure all completed containers are reported to the AMs across
|
YARN-1372. Ensure all completed containers are reported to the AMs across
|
||||||
RM restart. (Anubhav Dhoot via jianhe)
|
RM restart. (Anubhav Dhoot via jianhe)
|
||||||
|
|
||||||
|
YARN-2539. FairScheduler: Set the default value for maxAMShare to 0.5.
|
||||||
|
(Wei Yan via kasha)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
@ -130,7 +130,7 @@ public AllocationConfiguration(Configuration conf) {
|
|||||||
queueMaxAMShares = new HashMap<String, Float>();
|
queueMaxAMShares = new HashMap<String, Float>();
|
||||||
userMaxAppsDefault = Integer.MAX_VALUE;
|
userMaxAppsDefault = Integer.MAX_VALUE;
|
||||||
queueMaxAppsDefault = Integer.MAX_VALUE;
|
queueMaxAppsDefault = Integer.MAX_VALUE;
|
||||||
queueMaxAMShareDefault = -1.0f;
|
queueMaxAMShareDefault = 0.5f;
|
||||||
queueAcls = new HashMap<String, Map<QueueACL, AccessControlList>>();
|
queueAcls = new HashMap<String, Map<QueueACL, AccessControlList>>();
|
||||||
minSharePreemptionTimeouts = new HashMap<String, Long>();
|
minSharePreemptionTimeouts = new HashMap<String, Long>();
|
||||||
fairSharePreemptionTimeouts = new HashMap<String, Long>();
|
fairSharePreemptionTimeouts = new HashMap<String, Long>();
|
||||||
|
@ -224,7 +224,7 @@ public synchronized void reloadAllocations() throws IOException,
|
|||||||
new HashMap<String, Map<QueueACL, AccessControlList>>();
|
new HashMap<String, Map<QueueACL, AccessControlList>>();
|
||||||
int userMaxAppsDefault = Integer.MAX_VALUE;
|
int userMaxAppsDefault = Integer.MAX_VALUE;
|
||||||
int queueMaxAppsDefault = Integer.MAX_VALUE;
|
int queueMaxAppsDefault = Integer.MAX_VALUE;
|
||||||
float queueMaxAMShareDefault = -1.0f;
|
float queueMaxAMShareDefault = 0.5f;
|
||||||
long defaultFairSharePreemptionTimeout = Long.MAX_VALUE;
|
long defaultFairSharePreemptionTimeout = Long.MAX_VALUE;
|
||||||
long defaultMinSharePreemptionTimeout = Long.MAX_VALUE;
|
long defaultMinSharePreemptionTimeout = Long.MAX_VALUE;
|
||||||
float defaultFairSharePreemptionThreshold = 0.5f;
|
float defaultFairSharePreemptionThreshold = 0.5f;
|
||||||
|
@ -3128,7 +3128,7 @@ public void testQueueMaxAMShareDefault() throws Exception {
|
|||||||
out.println("<queue name=\"queue1\">");
|
out.println("<queue name=\"queue1\">");
|
||||||
out.println("</queue>");
|
out.println("</queue>");
|
||||||
out.println("<queue name=\"queue2\">");
|
out.println("<queue name=\"queue2\">");
|
||||||
out.println("<maxAMShare>1.0</maxAMShare>");
|
out.println("<maxAMShare>0.4</maxAMShare>");
|
||||||
out.println("</queue>");
|
out.println("</queue>");
|
||||||
out.println("<queue name=\"queue3\">");
|
out.println("<queue name=\"queue3\">");
|
||||||
out.println("</queue>");
|
out.println("</queue>");
|
||||||
@ -3172,40 +3172,42 @@ public void testQueueMaxAMShareDefault() throws Exception {
|
|||||||
assertEquals("Queue queue5's fair share should be 0", 0, queue5
|
assertEquals("Queue queue5's fair share should be 0", 0, queue5
|
||||||
.getFairShare().getMemory());
|
.getFairShare().getMemory());
|
||||||
|
|
||||||
List<String> queues = Arrays.asList("root.default", "root.queue3",
|
List<String> queues = Arrays.asList("root.queue3", "root.queue4",
|
||||||
"root.queue4", "root.queue5");
|
"root.queue5");
|
||||||
for (String queue : queues) {
|
for (String queue : queues) {
|
||||||
createSchedulingRequest(1 * 1024, queue, "user1");
|
createSchedulingRequest(1 * 1024, queue, "user1");
|
||||||
scheduler.update();
|
scheduler.update();
|
||||||
scheduler.handle(updateEvent);
|
scheduler.handle(updateEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
Resource amResource1 = Resource.newInstance(2048, 1);
|
Resource amResource1 = Resource.newInstance(1024, 1);
|
||||||
int amPriority = RMAppAttemptImpl.AM_CONTAINER_PRIORITY.getPriority();
|
int amPriority = RMAppAttemptImpl.AM_CONTAINER_PRIORITY.getPriority();
|
||||||
|
|
||||||
// Exceeds queue limit, but default maxAMShare is -1.0 so it doesn't matter
|
// The fair share is 2048 MB, and the default maxAMShare is 0.5f,
|
||||||
|
// so the AM is accepted.
|
||||||
ApplicationAttemptId attId1 = createAppAttemptId(1, 1);
|
ApplicationAttemptId attId1 = createAppAttemptId(1, 1);
|
||||||
createApplicationWithAMResource(attId1, "queue1", "test1", amResource1);
|
createApplicationWithAMResource(attId1, "queue1", "test1", amResource1);
|
||||||
createSchedulingRequestExistingApplication(2048, 1, amPriority, attId1);
|
createSchedulingRequestExistingApplication(1024, 1, amPriority, attId1);
|
||||||
FSAppAttempt app1 = scheduler.getSchedulerApp(attId1);
|
FSAppAttempt app1 = scheduler.getSchedulerApp(attId1);
|
||||||
scheduler.update();
|
scheduler.update();
|
||||||
scheduler.handle(updateEvent);
|
scheduler.handle(updateEvent);
|
||||||
assertEquals("Application1's AM requests 2048 MB memory",
|
assertEquals("Application1's AM requests 1024 MB memory",
|
||||||
2048, app1.getAMResource().getMemory());
|
1024, app1.getAMResource().getMemory());
|
||||||
assertEquals("Application1's AM should be running",
|
assertEquals("Application1's AM should be running",
|
||||||
1, app1.getLiveContainers().size());
|
1, app1.getLiveContainers().size());
|
||||||
assertEquals("Queue1's AM resource usage should be 2048 MB memory",
|
assertEquals("Queue1's AM resource usage should be 1024 MB memory",
|
||||||
2048, queue1.getAmResourceUsage().getMemory());
|
1024, queue1.getAmResourceUsage().getMemory());
|
||||||
|
|
||||||
// Exceeds queue limit, and maxAMShare is 1.0
|
// Now the fair share is 1639 MB, and the maxAMShare is 0.4f,
|
||||||
|
// so the AM is not accepted.
|
||||||
ApplicationAttemptId attId2 = createAppAttemptId(2, 1);
|
ApplicationAttemptId attId2 = createAppAttemptId(2, 1);
|
||||||
createApplicationWithAMResource(attId2, "queue2", "test1", amResource1);
|
createApplicationWithAMResource(attId2, "queue2", "test1", amResource1);
|
||||||
createSchedulingRequestExistingApplication(2048, 1, amPriority, attId2);
|
createSchedulingRequestExistingApplication(1024, 1, amPriority, attId2);
|
||||||
FSAppAttempt app2 = scheduler.getSchedulerApp(attId2);
|
FSAppAttempt app2 = scheduler.getSchedulerApp(attId2);
|
||||||
scheduler.update();
|
scheduler.update();
|
||||||
scheduler.handle(updateEvent);
|
scheduler.handle(updateEvent);
|
||||||
assertEquals("Application2's AM requests 2048 MB memory",
|
assertEquals("Application2's AM requests 1024 MB memory",
|
||||||
2048, app2.getAMResource().getMemory());
|
1024, app2.getAMResource().getMemory());
|
||||||
assertEquals("Application2's AM should not be running",
|
assertEquals("Application2's AM should not be running",
|
||||||
0, app2.getLiveContainers().size());
|
0, app2.getLiveContainers().size());
|
||||||
assertEquals("Queue2's AM resource usage should be 0 MB memory",
|
assertEquals("Queue2's AM resource usage should be 0 MB memory",
|
||||||
|
@ -246,8 +246,8 @@ Allocation file format
|
|||||||
* maxAMShare: limit the fraction of the queue's fair share that can be used
|
* maxAMShare: limit the fraction of the queue's fair share that can be used
|
||||||
to run application masters. This property can only be used for leaf queues.
|
to run application masters. This property can only be used for leaf queues.
|
||||||
For example, if set to 1.0f, then AMs in the leaf queue can take up to 100%
|
For example, if set to 1.0f, then AMs in the leaf queue can take up to 100%
|
||||||
of both the memory and CPU fair share. The default value is -1.0f, which
|
of both the memory and CPU fair share. The value of -1.0f will disable
|
||||||
means that this check is disabled.
|
this feature and the amShare will not be checked. The default value is 0.5f.
|
||||||
|
|
||||||
* weight: to share the cluster non-proportionally with other queues. Weights
|
* weight: to share the cluster non-proportionally with other queues. Weights
|
||||||
default to 1, and a queue with weight 2 should receive approximately twice
|
default to 1, and a queue with weight 2 should receive approximately twice
|
||||||
|
Loading…
Reference in New Issue
Block a user