Author: tucu
Date: Tue Mar 26 03:27:26 2013
New Revision: 1460962
URL: http://svn.apache.org/r1460962
Log:
YARN-469. Make scheduling mode in FS pluggable. (kkambatl via tucu)
Added:
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/modes/
- copied from r1460961,
hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/modes/
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/modes/FairSchedulingMode.java
- copied unchanged from r1460961,
hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/modes/FairSchedulingMode.java
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/modes/FifoSchedulingMode.java
- copied unchanged from r1460961,
hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/modes/FifoSchedulingMode.java
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestSchedulingMode.java
- copied unchanged from r1460961,
hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestSchedulingMode.java
Removed:
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingAlgorithms.java
Modified:
hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt
hadoop/common/branches/branch-2/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/common/branches/branch-2/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/common/branches/branch-2/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/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/QueueManager.java
hadoop/common/branches/branch-2/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/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingMode.java
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestComputeFairShares.java
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
Modified: hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt?rev=1460962&r1=1460961&r2=1460962&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-yarn-project/CHANGES.txt Tue Mar 26
03:27:26 2013
@@ -41,6 +41,8 @@ Release 2.0.5-beta - UNRELEASED
YARN-497. Yarn unmanaged-am launcher jar does not define a main class in
its manifest (Hitesh Shah via bikas)
+ YARN-469. Make scheduling mode in FS pluggable. (kkambatl via tucu)
+
OPTIMIZATIONS
BUG FIXES
Modified:
hadoop/common/branches/branch-2/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
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/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?rev=1460962&r1=1460961&r2=1460962&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/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
(original)
+++
hadoop/common/branches/branch-2/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
Tue Mar 26 03:27:26 2013
@@ -92,13 +92,7 @@ public class FSLeafQueue extends FSQueue
@Override
public void recomputeFairShares() {
- if (schedulingMode == SchedulingMode.FAIR) {
- SchedulingAlgorithms.computeFairShares(appScheds, getFairShare());
- } else {
- for (AppSchedulable sched: appScheds) {
- sched.setFairShare(Resources.createResource(0));
- }
- }
+ schedulingMode.computeShares(getAppSchedulables(), getFairShare());
}
@Override
@@ -162,17 +156,9 @@ public class FSLeafQueue extends FSQueue
return Resources.none(); // We should never get here
}
- // Otherwise, chose app to schedule based on given policy (fair vs fifo).
+ // Otherwise, chose app to schedule based on given policy.
else {
- Comparator<Schedulable> comparator;
- if (schedulingMode == SchedulingMode.FIFO) {
- comparator = new SchedulingAlgorithms.FifoComparator();
- } else if (schedulingMode == SchedulingMode.FAIR) {
- comparator = new SchedulingAlgorithms.FairShareComparator();
- } else {
- throw new RuntimeException("Unsupported queue scheduling mode " +
- schedulingMode);
- }
+ Comparator<Schedulable> comparator = schedulingMode.getComparator();
Collections.sort(appScheds, comparator);
for (AppSchedulable sched: appScheds) {
Modified:
hadoop/common/branches/branch-2/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
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/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?rev=1460962&r1=1460961&r2=1460962&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/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
(original)
+++
hadoop/common/branches/branch-2/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
Tue Mar 26 03:27:26 2013
@@ -51,7 +51,7 @@ public class FSParentQueue extends FSQue
@Override
public void recomputeFairShares() {
- SchedulingAlgorithms.computeFairShares(childQueues, getFairShare());
+ SchedulingMode.getDefault().computeShares(childQueues, getFairShare());
for (FSQueue childQueue : childQueues) {
childQueue.getMetrics().setAvailableResourcesToQueue(childQueue.getFairShare());
childQueue.recomputeFairShares();
Modified:
hadoop/common/branches/branch-2/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
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/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?rev=1460962&r1=1460961&r2=1460962&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/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
(original)
+++
hadoop/common/branches/branch-2/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
Tue Mar 26 03:27:26 2013
@@ -799,7 +799,7 @@ public class FairScheduler implements Re
// At most one task is scheduled each iteration of this loop
List<FSLeafQueue> scheds = new ArrayList<FSLeafQueue>(
queueMgr.getLeafQueues());
- Collections.sort(scheds, new
SchedulingAlgorithms.FairShareComparator());
+ Collections.sort(scheds, SchedulingMode.getDefault().getComparator());
boolean assignedContainer = false;
for (FSLeafQueue sched : scheds) {
Resource assigned = sched.assignContainer(node, false);
Modified:
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/QueueManager.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/QueueManager.java?rev=1460962&r1=1460961&r2=1460962&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/QueueManager.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/QueueManager.java
Tue Mar 26 03:27:26 2013
@@ -310,7 +310,7 @@ public class QueueManager {
int queueMaxAppsDefault = Integer.MAX_VALUE;
long fairSharePreemptionTimeout = Long.MAX_VALUE;
long defaultMinSharePreemptionTimeout = Long.MAX_VALUE;
- SchedulingMode defaultSchedulingMode = SchedulingMode.FAIR;
+ SchedulingMode defaultSchedulingMode = SchedulingMode.getDefault();
// Remember all queue names so we can display them on web UI, etc.
List<String> queueNamesInAllocFile = new ArrayList<String>();
@@ -373,7 +373,8 @@ public class QueueManager {
queueMaxAppsDefault = val;}
else if ("defaultQueueSchedulingMode".equals(element.getTagName())) {
String text = ((Text)element.getFirstChild()).getData().trim();
- defaultSchedulingMode = parseSchedulingMode(text);
+ SchedulingMode.setDefault(text);
+ defaultSchedulingMode = SchedulingMode.getDefault();
} else {
LOG.warn("Bad element in allocations file: " + element.getTagName());
}
@@ -449,7 +450,7 @@ public class QueueManager {
minSharePreemptionTimeouts.put(queueName, val);
} else if ("schedulingMode".equals(field.getTagName())) {
String text = ((Text)field.getFirstChild()).getData().trim();
- queueModes.put(queueName, parseSchedulingMode(text));
+ queueModes.put(queueName, SchedulingMode.parse(text));
} else if ("aclSubmitApps".equals(field.getTagName())) {
String text = ((Text)field.getFirstChild()).getData().trim();
acls.put(QueueACL.SUBMIT_APPLICATIONS, new AccessControlList(text));
@@ -476,19 +477,6 @@ public class QueueManager {
}
}
- private SchedulingMode parseSchedulingMode(String text)
- throws AllocationConfigurationException {
- text = text.toLowerCase();
- if (text.equals("fair")) {
- return SchedulingMode.FAIR;
- } else if (text.equals("fifo")) {
- return SchedulingMode.FIFO;
- } else {
- throw new AllocationConfigurationException(
- "Unknown scheduling mode : " + text + "; expected 'fifo' or 'fair'");
- }
- }
-
/**
* Get the minimum resource allocation for the given queue.
* @return the cap set on this queue, or 0 if not set.
@@ -663,7 +651,7 @@ public class QueueManager {
minSharePreemptionTimeouts = new HashMap<String, Long>();
defaultMinSharePreemptionTimeout = Long.MAX_VALUE;
fairSharePreemptionTimeout = Long.MAX_VALUE;
- defaultSchedulingMode = SchedulingMode.FAIR;
+ defaultSchedulingMode = SchedulingMode.getDefault();
}
}
}
Modified:
hadoop/common/branches/branch-2/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
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/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?rev=1460962&r1=1460961&r2=1460962&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/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
(original)
+++
hadoop/common/branches/branch-2/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
Tue Mar 26 03:27:26 2013
@@ -55,7 +55,7 @@ import org.apache.hadoop.yarn.server.res
*/
@Private
@Unstable
-abstract class Schedulable {
+public abstract class Schedulable {
/** Fair share assigned to this Schedulable */
private Resource fairShare = Resources.createResource(0);
Modified:
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingMode.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingMode.java?rev=1460962&r1=1460961&r2=1460962&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingMode.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingMode.java
Tue Mar 26 03:27:26 2013
@@ -15,17 +15,104 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair;
-import org.apache.hadoop.classification.InterfaceAudience.Private;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Unstable;
+import org.apache.hadoop.util.ReflectionUtils;
+import org.apache.hadoop.yarn.api.records.Resource;
+import
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.modes.FairSchedulingMode;
+import
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.modes.FifoSchedulingMode;
-/**
- * Internal scheduling modes for queues.
- */
-@Private
+@Public
@Unstable
-public enum SchedulingMode {
- FAIR, FIFO
+public abstract class SchedulingMode {
+ private static final ConcurrentHashMap<Class<? extends SchedulingMode>,
SchedulingMode> instances =
+ new ConcurrentHashMap<Class<? extends SchedulingMode>, SchedulingMode>();
+
+ private static SchedulingMode DEFAULT_MODE =
+ getInstance(FairSchedulingMode.class);
+
+ public static SchedulingMode getDefault() {
+ return DEFAULT_MODE;
+ }
+
+ public static void setDefault(String className)
+ throws AllocationConfigurationException {
+ DEFAULT_MODE = parse(className);
+ }
+
+ /**
+ * Returns a {@link SchedulingMode} instance corresponding to the passed
clazz
+ */
+ public static SchedulingMode getInstance(Class<? extends SchedulingMode>
clazz) {
+ SchedulingMode mode = instances.get(clazz);
+ if (mode == null) {
+ mode = ReflectionUtils.newInstance(clazz, null);
+ instances.put(clazz, mode);
+ }
+ return mode;
+ }
+
+ /**
+ * Returns {@link SchedulingMode} instance corresponding to the
+ * {@link SchedulingMode} passed as a string. The mode can be "fair" for
+ * FairSchedulingMode of "fifo" for FifoSchedulingMode. For custom
+ * {@link SchedulingMode}s in the RM classpath, the mode should be canonical
+ * class name of the {@link SchedulingMode}.
+ *
+ * @param mode canonical class name or "fair" or "fifo"
+ * @throws AllocationConfigurationException
+ */
+ @SuppressWarnings("unchecked")
+ public static SchedulingMode parse(String mode)
+ throws AllocationConfigurationException {
+ @SuppressWarnings("rawtypes")
+ Class clazz;
+ String text = mode.toLowerCase();
+ if (text.equals("fair")) {
+ clazz = FairSchedulingMode.class;
+ } else if (text.equals("fifo")) {
+ clazz = FifoSchedulingMode.class;
+ } else {
+ try {
+ clazz = Class.forName(mode);
+ } catch (ClassNotFoundException cnfe) {
+ throw new AllocationConfigurationException(mode
+ + " SchedulingMode class not found!");
+ }
+ }
+ if (!SchedulingMode.class.isAssignableFrom(clazz)) {
+ throw new AllocationConfigurationException(mode
+ + " does not extend SchedulingMode");
+ }
+ return getInstance(clazz);
+ }
+
+ /**
+ * @return returns the name of SchedulingMode
+ */
+ public abstract String getName();
+
+ /**
+ * The comparator returned by this method is to be used for sorting the
+ * {@link Schedulable}s in that queue.
+ *
+ * @return the comparator to sort by
+ */
+ public abstract Comparator<Schedulable> getComparator();
+
+ /**
+ * Computes and updates the shares of {@link Schedulable}s as per the
+ * SchedulingMode, to be used later at schedule time.
+ *
+ * @param schedulables {@link Schedulable}s whose shares are to be updated
+ * @param totalResources Total {@link Resource}s in the cluster
+ */
+ public abstract void computeShares(
+ Collection<? extends Schedulable> schedulables, Resource totalResources);
}
Modified:
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestComputeFairShares.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestComputeFairShares.java?rev=1460962&r1=1460961&r2=1460962&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestComputeFairShares.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestComputeFairShares.java
Tue Mar 26 03:27:26 2013
@@ -24,6 +24,7 @@ import java.util.List;
import junit.framework.Assert;
import org.apache.hadoop.yarn.server.resourcemanager.resource.Resources;
+import
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.modes.FairSchedulingMode;
import org.junit.Before;
import org.junit.Test;
@@ -32,10 +33,12 @@ import org.junit.Test;
*/
public class TestComputeFairShares {
private List<Schedulable> scheds;
+ private SchedulingMode schedulingMode;
@Before
public void setUp() throws Exception {
scheds = new ArrayList<Schedulable>();
+ schedulingMode = new FairSchedulingMode();
}
/**
@@ -48,7 +51,8 @@ public class TestComputeFairShares {
scheds.add(new FakeSchedulable(50));
scheds.add(new FakeSchedulable(30));
scheds.add(new FakeSchedulable(20));
- SchedulingAlgorithms.computeFairShares(scheds,
Resources.createResource(40));
+ schedulingMode.computeShares(scheds,
+ Resources.createResource(40));
verifyShares(10, 10, 10, 10);
}
@@ -65,7 +69,8 @@ public class TestComputeFairShares {
scheds.add(new FakeSchedulable(50));
scheds.add(new FakeSchedulable(11));
scheds.add(new FakeSchedulable(3));
- SchedulingAlgorithms.computeFairShares(scheds,
Resources.createResource(40));
+ schedulingMode.computeShares(scheds,
+ Resources.createResource(40));
verifyShares(13, 13, 11, 3);
}
@@ -83,7 +88,8 @@ public class TestComputeFairShares {
scheds.add(new FakeSchedulable(10, 20));
scheds.add(new FakeSchedulable(10, 0));
scheds.add(new FakeSchedulable(3, 2));
- SchedulingAlgorithms.computeFairShares(scheds,
Resources.createResource(40));
+ schedulingMode.computeShares(scheds,
+ Resources.createResource(40));
verifyShares(20, 10, 7, 3);
}
@@ -97,7 +103,8 @@ public class TestComputeFairShares {
scheds.add(new FakeSchedulable(50, 0, 1.0));
scheds.add(new FakeSchedulable(30, 0, 1.0));
scheds.add(new FakeSchedulable(20, 0, 0.5));
- SchedulingAlgorithms.computeFairShares(scheds,
Resources.createResource(45));
+ schedulingMode.computeShares(scheds,
+ Resources.createResource(45));
verifyShares(20, 10, 10, 5);
}
@@ -114,7 +121,8 @@ public class TestComputeFairShares {
scheds.add(new FakeSchedulable(11, 0, 1.0));
scheds.add(new FakeSchedulable(30, 0, 1.0));
scheds.add(new FakeSchedulable(20, 0, 0.5));
- SchedulingAlgorithms.computeFairShares(scheds,
Resources.createResource(45));
+ schedulingMode.computeShares(scheds,
+ Resources.createResource(45));
verifyShares(10, 11, 16, 8);
}
@@ -131,7 +139,8 @@ public class TestComputeFairShares {
scheds.add(new FakeSchedulable(11, 0, 1.0));
scheds.add(new FakeSchedulable(30, 5, 1.0));
scheds.add(new FakeSchedulable(20, 15, 0.5));
- SchedulingAlgorithms.computeFairShares(scheds,
Resources.createResource(45));
+ schedulingMode.computeShares(scheds,
+ Resources.createResource(45));
verifyShares(10, 10, 10, 15);
}
@@ -146,7 +155,9 @@ public class TestComputeFairShares {
scheds.add(new FakeSchedulable(50 * million));
scheds.add(new FakeSchedulable(30 * million));
scheds.add(new FakeSchedulable(20 * million));
- SchedulingAlgorithms.computeFairShares(scheds, Resources.createResource(40
* million));
+ schedulingMode
+ .computeShares(scheds,
+ Resources.createResource(40 * million));
verifyShares(10 * million, 10 * million, 10 * million, 10 * million);
}
@@ -159,7 +170,8 @@ public class TestComputeFairShares {
scheds.add(new FakeSchedulable(50));
scheds.add(new FakeSchedulable(30));
scheds.add(new FakeSchedulable(0));
- SchedulingAlgorithms.computeFairShares(scheds,
Resources.createResource(30));
+ schedulingMode.computeShares(scheds,
+ Resources.createResource(30));
verifyShares(10, 10, 10, 0);
}
@@ -168,7 +180,8 @@ public class TestComputeFairShares {
*/
@Test
public void testEmptyList() {
- SchedulingAlgorithms.computeFairShares(scheds,
Resources.createResource(40));
+ schedulingMode.computeShares(scheds,
+ Resources.createResource(40));
verifyShares();
}
Modified:
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java?rev=1460962&r1=1460961&r2=1460962&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
Tue Mar 26 03:27:26 2013
@@ -63,6 +63,7 @@ import org.apache.hadoop.yarn.server.res
import
org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeAddedSchedulerEvent;
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.fair.modes.FifoSchedulingMode;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -1316,7 +1317,7 @@ public class TestFairScheduler {
FSSchedulerApp app2 = scheduler.applications.get(attId2);
FSLeafQueue queue1 = scheduler.getQueueManager().getLeafQueue("queue1");
- queue1.setSchedulingMode(SchedulingMode.FIFO);
+ queue1.setSchedulingMode(new FifoSchedulingMode());
scheduler.update();