浏览代码

YARN-2726. CapacityScheduler should explicitly log when an accessible label has no capacity. Contributed by Wangda Tan

Xuan 10 年之前
父节点
当前提交
ce1a4419a6

+ 3 - 0
hadoop-yarn-project/CHANGES.txt

@@ -763,6 +763,9 @@ Release 2.6.0 - UNRELEASED
     YARN-2734. Skipped sub-folders in the local log dir when aggregating logs.
     (Xuan Gong via zjshen)
 
+    YARN-2726. CapacityScheduler should explicitly log when an accessible
+    label has no capacity. (Wangda Tan via xgong)
+
 Release 2.5.1 - 2014-09-05
 
   INCOMPATIBLE CHANGES

+ 11 - 4
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java

@@ -466,12 +466,19 @@ public class CapacitySchedulerConfiguration extends Configuration {
         nodeLabelCapacities.put(label, 1.0f);
         continue;
       }
-      float capacity =
-          getFloat(getNodeLabelPrefix(queue, label) + CAPACITY, UNDEFINED);
+      String capacityPropertyName = getNodeLabelPrefix(queue, label) + CAPACITY;
+      float capacity = getFloat(capacityPropertyName, UNDEFINED);
+      if (capacity == UNDEFINED) {
+        throw new IllegalArgumentException("Configuration issue: "
+            + " node-label=" + label + " is accessible from queue=" + queue
+            + " but has no capacity set, you should set " 
+            + capacityPropertyName + " in range of [0, 100].");
+      }
       if (capacity < MINIMUM_CAPACITY_VALUE
           || capacity > MAXIMUM_CAPACITY_VALUE) {
-        throw new IllegalArgumentException("Illegal " + "capacity of "
-            + capacity + " for label=" + label + " in queue=" + queue);
+        throw new IllegalArgumentException("Illegal capacity of " + capacity
+            + " for node-label=" + label + " in queue=" + queue
+            + ", valid capacity should in range of [0, 100].");
       }
       if (LOG.isDebugEnabled()) {
         LOG.debug("CSConf - getCapacityOfLabel: prefix="