YARN-1370. Fair scheduler to re-populate container allocation state. (Anubhav Dhoot via kasha)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1617645 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Karthik Kambatla 2014-08-13 01:38:59 +00:00
parent e0a9e1bfb7
commit 5197f8c3c5
3 changed files with 12 additions and 2 deletions

View File

@ -125,6 +125,9 @@ Release 2.6.0 - UNRELEASED
YARN-2399. FairScheduler: Merge AppSchedulable and FSSchedulerApp into YARN-2399. FairScheduler: Merge AppSchedulable and FSSchedulerApp into
FSAppAttempt. (kasha) FSAppAttempt. (kasha)
YARN-1370. Fair scheduler to re-populate container allocation state.
(Anubhav Dhoot via kasha)
OPTIMIZATIONS OPTIMIZATIONS
BUG FIXES BUG FIXES

View File

@ -1150,6 +1150,8 @@ public void handle(SchedulerEvent event) {
} }
NodeAddedSchedulerEvent nodeAddedEvent = (NodeAddedSchedulerEvent)event; NodeAddedSchedulerEvent nodeAddedEvent = (NodeAddedSchedulerEvent)event;
addNode(nodeAddedEvent.getAddedRMNode()); addNode(nodeAddedEvent.getAddedRMNode());
recoverContainersOnNode(nodeAddedEvent.getContainerReports(),
nodeAddedEvent.getAddedRMNode());
break; break;
case NODE_REMOVED: case NODE_REMOVED:
if (!(event instanceof NodeRemovedSchedulerEvent)) { if (!(event instanceof NodeRemovedSchedulerEvent)) {

View File

@ -57,6 +57,7 @@
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler;
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.util.resource.DominantResourceCalculator; import org.apache.hadoop.yarn.util.resource.DominantResourceCalculator;
import org.apache.hadoop.yarn.util.resource.ResourceCalculator; import org.apache.hadoop.yarn.util.resource.ResourceCalculator;
@ -107,7 +108,7 @@ public void tearDown() {
@Parameterized.Parameters @Parameterized.Parameters
public static Collection<Object[]> getTestParameters() { public static Collection<Object[]> getTestParameters() {
return Arrays.asList(new Object[][] { { CapacityScheduler.class }, return Arrays.asList(new Object[][] { { CapacityScheduler.class },
{ FifoScheduler.class } }); { FifoScheduler.class }, {FairScheduler.class } });
} }
public TestWorkPreservingRMRestart(Class<?> schedulerClass) { public TestWorkPreservingRMRestart(Class<?> schedulerClass) {
@ -224,7 +225,11 @@ public void testSchedulerRecovery() throws Exception {
assertTrue(schedulerAttempt.getLiveContainers().contains( assertTrue(schedulerAttempt.getLiveContainers().contains(
scheduler.getRMContainer(runningContainer.getContainerId()))); scheduler.getRMContainer(runningContainer.getContainerId())));
assertEquals(schedulerAttempt.getCurrentConsumption(), usedResources); assertEquals(schedulerAttempt.getCurrentConsumption(), usedResources);
assertEquals(availableResources, schedulerAttempt.getHeadroom());
// Until YARN-1959 is resolved
if (scheduler.getClass() != FairScheduler.class) {
assertEquals(availableResources, schedulerAttempt.getHeadroom());
}
// *********** check appSchedulingInfo state *********** // *********** check appSchedulingInfo state ***********
assertEquals((1 << 22) + 1, schedulerAttempt.getNewContainerId()); assertEquals((1 << 22) + 1, schedulerAttempt.getNewContainerId());