diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java index cfec915..86b9ab7 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java @@ -764,12 +764,36 @@ public Resource getMaxShare() { @Override public Resource getResourceUsage() { + return getCurrentConsumption(); + } + + @Override + public Resource getNetResourceUsage() { // Here the getPreemptedResources() always return zero, except in // a preemption round return Resources.subtract(getCurrentConsumption(), getPreemptedResources()); } @Override + public Resource getPreemptable() { + Resource preemtable = Resources.createResource(0, 0); + preemtable.setMemory( + getNetResourceUsage().getMemory() > getFairShare().getMemory() ? + getNetResourceUsage().getMemory() : getFairShare().getMemory() + ); + preemtable.setVirtualCores( + getNetResourceUsage().getVirtualCores() > getFairShare().getVirtualCores() ? + getNetResourceUsage().getVirtualCores() : getFairShare().getVirtualCores() + ); + return preemtable; + } + + @Override + public Resource getAggregateChildrenPreemptable() { + return getPreemptable(); + } + + @Override public ResourceWeights getWeights() { return scheduler.getAppWeight(this); } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java index f90a198..8a33fb6 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java @@ -255,6 +255,47 @@ public Resource getResourceUsage() { return usage; } + @Override + public Resource getNetResourceUsage() { + Resource usage = Resources.createResource(0); + readLock.lock(); + try { + for (FSAppAttempt app : runnableApps) { + Resources.addTo(usage, app.getNetResourceUsage()); + } + for (FSAppAttempt app : nonRunnableApps) { + Resources.addTo(usage, app.getNetResourceUsage()); + } + } finally { + readLock.unlock(); + } + return usage; + } + + @Override + public Resource getPreemptable() { + return Resources.greaterThan(policy.getResourceCalculator(), + scheduler.getClusterResource(), getNetResourceUsage(), Resources.none()) ? + getNetResourceUsage() : Resources.none(); + } + + @Override + public Resource getAggregateChildrenPreemptable() { + Resource childrenPreemtable = Resources.createResource(0); + readLock.lock(); + try { + for (FSAppAttempt app : runnableApps) { + Resources.addTo(childrenPreemtable, app.getAggregateChildrenPreemptable()); + } + for (FSAppAttempt app : nonRunnableApps) { + Resources.addTo(childrenPreemtable, app.getAggregateChildrenPreemptable()); + } + } finally { + readLock.unlock(); + } + return childrenPreemtable; + } + public Resource getAmResourceUsage() { return amResourceUsage; } @@ -360,13 +401,14 @@ public RMContainer preemptContainer() { } // Choose the app that is most over fair share - Comparator comparator = policy.getComparator(); + Comparator comparator = + policy.getComparator(SchedulingPolicy.ComparatorUse.PREEMPTION); FSAppAttempt candidateSched = null; readLock.lock(); try { for (FSAppAttempt sched : runnableApps) { if (candidateSched == null || - comparator.compare(sched, candidateSched) > 0) { + comparator.compare(sched, candidateSched) < 0) { candidateSched = sched; } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSParentQueue.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSParentQueue.java index 7d2e5b8..e05effa 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSParentQueue.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSParentQueue.java @@ -148,6 +148,41 @@ public Resource getResourceUsage() { } @Override + public Resource getNetResourceUsage() { + Resource usage = Resources.createResource(0); + readLock.lock(); + try { + for (FSQueue child : childQueues) { + Resources.addTo(usage, child.getNetResourceUsage()); + } + } finally { + readLock.unlock(); + } + return usage; + } + + @Override + public Resource getPreemptable() { + return Resources.greaterThan(policy.getResourceCalculator(), + scheduler.getClusterResource(), getNetResourceUsage(), Resources.none()) ? + getNetResourceUsage() : Resources.none(); + } + + @Override + public Resource getAggregateChildrenPreemptable() { + Resource childrenPreemtable = Resources.createResource(0); + readLock.lock(); + try { + for (FSQueue child : childQueues) { + Resources.addTo(childrenPreemtable, child.getAggregateChildrenPreemptable()); + } + } finally { + readLock.unlock(); + } + return childrenPreemtable; + } + + @Override public void updateDemand() { // Compute demand by iterating through apps in the queue // Limit demand to maxResources @@ -254,13 +289,14 @@ public RMContainer preemptContainer() { // Find the childQueue which is most over fair share FSQueue candidateQueue = null; - Comparator comparator = policy.getComparator(); + Comparator comparator = + policy.getComparator(SchedulingPolicy.ComparatorUse.PREEMPTION); readLock.lock(); try { for (FSQueue queue : childQueues) { if (candidateQueue == null || - comparator.compare(queue, candidateQueue) > 0) { + comparator.compare(queue, candidateQueue) < 0) { candidateQueue = queue; } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java index 3eefb8f..8dd331d 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java @@ -374,7 +374,7 @@ protected synchronized void preemptTasksIfNecessary() { for (FSLeafQueue sched : queueMgr.getLeafQueues()) { Resources.addTo(resToPreempt, resourceDeficit(sched, curTime)); } - if (isResourceGreaterThanNone(resToPreempt)) { + if (isResourceGreaterOrEqualThanMinimumContainer(resToPreempt)) { preemptResources(resToPreempt); } } @@ -404,7 +404,7 @@ protected void preemptResources(Resource toPreempt) { RMContainer container = warnedIter.next(); if ((container.getState() == RMContainerState.RUNNING || container.getState() == RMContainerState.ALLOCATED) && - isResourceGreaterThanNone(toPreempt)) { + isResourceGreaterOrEqualThanMinimumContainer(toPreempt)) { warnOrKillContainer(container); Resources.subtractFrom(toPreempt, container.getContainer().getResource()); } else { @@ -418,7 +418,7 @@ protected void preemptResources(Resource toPreempt) { queue.resetPreemptedResources(); } - while (isResourceGreaterThanNone(toPreempt)) { + while (isResourceGreaterOrEqualThanMinimumContainer(toPreempt)) { RMContainer container = getQueueManager().getRootQueue().preemptContainer(); if (container == null) { @@ -441,8 +441,9 @@ protected void preemptResources(Resource toPreempt) { fsOpDurations.addPreemptCallDuration(duration); } - private boolean isResourceGreaterThanNone(Resource toPreempt) { - return (toPreempt.getMemory() > 0) || (toPreempt.getVirtualCores() > 0); + private boolean isResourceGreaterOrEqualThanMinimumContainer(Resource toPreempt) { + return (toPreempt.getMemory() >= getMinimumResourceCapability().getMemory()) || + (toPreempt.getVirtualCores() >= getMinimumResourceCapability().getVirtualCores()); } protected void warnOrKillContainer(RMContainer container) { diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/Schedulable.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/Schedulable.java index 289887f..9fbc3b6 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/Schedulable.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/Schedulable.java @@ -67,6 +67,20 @@ /** Get the aggregate amount of resources consumed by the schedulable. */ public Resource getResourceUsage(); + /** + * Get the aggregate amount of net resources used by the schedulable, which + * does not take account in resources that has marked as preempted. + * + * @return the net resource usage. + */ + public Resource getNetResourceUsage(); + + /** Get the amount of preemtable resource. */ + public Resource getPreemptable(); + + /** Get the aggregate amount of preemtable resource. */ + public Resource getAggregateChildrenPreemptable(); + /** Minimum Resource share assigned to the schedulable. */ public Resource getMinShare(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java index 160ba4b..58e1cfb 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java @@ -60,6 +60,10 @@ public static SchedulingPolicy getInstance(Class cla return policy; } + public enum ComparatorUse { + DEFAULT, PREEMPTION + } + /** * Returns {@link SchedulingPolicy} instance corresponding to the * {@link SchedulingPolicy} passed as a string. The policy can be "fair" for @@ -143,6 +147,15 @@ public static boolean isApplicableTo(SchedulingPolicy policy, byte depth) { public abstract Comparator getComparator(); /** + * The comparator returned by this method is to be used for sorting the + * {@link Schedulable}s in that queue which is used for specific purpose. + * + * @param use of the comparator + * @return the comparator to sort by + */ + public abstract Comparator getComparator(ComparatorUse use); + + /** * Computes and updates the shares of {@link Schedulable}s as per * the {@link SchedulingPolicy}, to be used later for scheduling decisions. * The shares computed are instantaneous and only consider queues with diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/DominantResourceFairnessPolicy.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/DominantResourceFairnessPolicy.java index 45fbf98..d6cb8a6 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/DominantResourceFairnessPolicy.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/DominantResourceFairnessPolicy.java @@ -18,6 +18,7 @@ package org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies; +import java.io.Serializable; import java.util.Collection; import java.util.Comparator; @@ -49,6 +50,8 @@ private static final DominantResourceFairnessComparator COMPARATOR = new DominantResourceFairnessComparator(); + private static final DRFPreemptionComparator PREEMPTION_COMPARATOR = + new DRFPreemptionComparator(); private static final DominantResourceCalculator CALCULATOR = new DominantResourceCalculator(); @@ -68,6 +71,13 @@ public byte getApplicableDepth() { } @Override + public Comparator getComparator(ComparatorUse use) { + if (use == ComparatorUse.PREEMPTION) + return PREEMPTION_COMPARATOR; + return COMPARATOR; + } + + @Override public ResourceCalculator getResourceCalculator() { return CALCULATOR; } @@ -118,7 +128,9 @@ public void initialize(Resource clusterCapacity) { COMPARATOR.setClusterCapacity(clusterCapacity); } - public static class DominantResourceFairnessComparator implements Comparator { + public static class DominantResourceFairnessComparator implements Comparator, + Serializable { + private static final long serialVersionUID = -5270956964933754559L; private static final int NUM_RESOURCES = ResourceType.values().length; private Resource clusterCapacity; @@ -208,4 +220,42 @@ private int compareShares(ResourceWeights shares1, ResourceWeights shares2, return 0; } } + + public static class DRFPreemptionComparator implements Comparator, + Serializable { + private static final long serialVersionUID = -3385005914369596517L; + + @Override + public int compare(Schedulable s1, Schedulable s2) { + int res = 0; + boolean hasPreemptable1, hasPreemptable2; + hasPreemptable1 = Resources.greaterThan(CALCULATOR, null, + s1.getPreemptable(), Resources.none()); + hasPreemptable2 = Resources.greaterThan(CALCULATOR, null, + s2.getPreemptable(), Resources.none()); + if (hasPreemptable1 && !hasPreemptable2) + res = -1; + else if (!hasPreemptable1 && hasPreemptable2) + res = 1; + else if (hasPreemptable1 && hasPreemptable2) { + if (Resources.equals(s1.getPreemptable(), s2.getPreemptable())) { + if (Resources.equals(s1.getAggregateChildrenPreemptable(), + s2.getAggregateChildrenPreemptable())) { + res = COMPARATOR.compare(s2, s1); + } else { + res = Resources.greaterThan(CALCULATOR, null, + s1.getAggregateChildrenPreemptable(), + s2.getAggregateChildrenPreemptable()) ? -1 : 1; + } + } else { + res = Resources.greaterThan(CALCULATOR, null, + s1.getPreemptable(), s2.getPreemptable()) ? -1 : 1; + } + } else { + res = COMPARATOR.compare(s2, s1); + } + + return res; + } + } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java index 3b9f07f..040d53b 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java @@ -44,8 +44,10 @@ public static final String NAME = "fair"; private static final DefaultResourceCalculator RESOURCE_CALCULATOR = new DefaultResourceCalculator(); + private static final FairPreemptionComparator PREEMPTION_COMPARATOR = + new FairPreemptionComparator(); private static final FairShareComparator COMPARATOR = - new FairShareComparator(); + new FairShareComparator(); @Override public String getName() { @@ -111,12 +113,58 @@ else if (s1Needy && s2Needy) } } + private static class FairPreemptionComparator implements Comparator, + Serializable { + private static final long serialVersionUID = -3963532038198764948L; + private static final Resource ONE = Resources.createResource(1); + + @Override + public int compare(Schedulable s1, Schedulable s2) { + int res = 0; + boolean hasPreemptable1, hasPreemptable2; + hasPreemptable1 = Resources.greaterThan(RESOURCE_CALCULATOR, null, + s1.getPreemptable(), Resources.none()); + hasPreemptable2 = Resources.greaterThan(RESOURCE_CALCULATOR, null, + s2.getPreemptable(), Resources.none()); + if (hasPreemptable1 && !hasPreemptable2) + res = -1; + else if (!hasPreemptable1 && hasPreemptable2) + res = 1; + else if (hasPreemptable1 && hasPreemptable2) { + if (Resources.equals(s1.getPreemptable(), s2.getPreemptable())) { + if (Resources.equals(s1.getAggregateChildrenPreemptable(), + s2.getAggregateChildrenPreemptable())) { + res = COMPARATOR.compare(s2, s1); + } else { + res = Resources.greaterThan(RESOURCE_CALCULATOR, null, + s1.getAggregateChildrenPreemptable(), + s2.getAggregateChildrenPreemptable()) ? -1 : 1; + } + } else { + res = Resources.greaterThan(RESOURCE_CALCULATOR, null, + s1.getPreemptable(), s2.getPreemptable()) ? -1 : 1; + } + } else { + res = COMPARATOR.compare(s2, s1); + } + + return res; + } + } + @Override public Comparator getComparator() { return COMPARATOR; } @Override + public Comparator getComparator(ComparatorUse use) { + if (use == ComparatorUse.PREEMPTION) + return PREEMPTION_COMPARATOR; + return COMPARATOR; + } + + @Override public ResourceCalculator getResourceCalculator() { return RESOURCE_CALCULATOR; } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FifoPolicy.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FifoPolicy.java index a644e58..1c21550 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FifoPolicy.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FifoPolicy.java @@ -24,6 +24,7 @@ import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.classification.InterfaceStability.Unstable; import org.apache.hadoop.yarn.api.records.Resource; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerUtils; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSQueue; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.Schedulable; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.SchedulingPolicy; @@ -41,6 +42,8 @@ @VisibleForTesting public static final String NAME = "FIFO"; private static final FifoComparator COMPARATOR = new FifoComparator(); + private static final FifoPreemptionComparator PREEMPTION_COMPARATOR = + new FifoPreemptionComparator(); private static final DefaultResourceCalculator CALCULATOR = new DefaultResourceCalculator(); @@ -72,12 +75,29 @@ public int compare(Schedulable s1, Schedulable s2) { } } + public static class FifoPreemptionComparator implements Comparator, + Serializable { + private static final long serialVersionUID = 5726552960326308006L; + + @Override + public int compare(Schedulable s1, Schedulable s2) { + return COMPARATOR.compare(s2, s1); + } + } + @Override public Comparator getComparator() { return COMPARATOR; } @Override + public Comparator getComparator(ComparatorUse use) { + if (use == ComparatorUse.PREEMPTION) + return PREEMPTION_COMPARATOR; + return COMPARATOR; + } + + @Override public ResourceCalculator getResourceCalculator() { return CALCULATOR; } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairSchedulerTestBase.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairSchedulerTestBase.java index 403c8ea..852cd02 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairSchedulerTestBase.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairSchedulerTestBase.java @@ -70,7 +70,7 @@ public Configuration createConfiguration() { Configuration conf = new YarnConfiguration(); conf.setClass(YarnConfiguration.RM_SCHEDULER, FairScheduler.class, ResourceScheduler.class); - conf.setInt(YarnConfiguration.RM_SCHEDULER_MINIMUM_ALLOCATION_MB, 0); + conf.setInt(YarnConfiguration.RM_SCHEDULER_MINIMUM_ALLOCATION_MB, 1024); conf.setInt(FairSchedulerConfiguration.RM_SCHEDULER_INCREMENT_ALLOCATION_MB, 1024); conf.setInt(YarnConfiguration.RM_SCHEDULER_MAXIMUM_ALLOCATION_MB, 10240); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FakeSchedulable.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FakeSchedulable.java index 5a170cf..cac8478 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FakeSchedulable.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FakeSchedulable.java @@ -121,6 +121,21 @@ public Resource getResourceUsage() { } @Override + public Resource getNetResourceUsage() { + return usage; + } + + @Override + public Resource getPreemptable() { + return null; + } + + @Override + public Resource getAggregateChildrenPreemptable() { + return null; + } + + @Override public long getStartTime() { return startTime; }