diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StringUtils.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StringUtils.java index 1be8a081bd6..ebe7013aeff 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StringUtils.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/StringUtils.java @@ -1171,16 +1171,16 @@ public class StringUtils { * @return true if only contains letters, and is non-null */ public static boolean isAlpha(String str) { - if (str == null) { - return false; + if (str == null) { + return false; + } + int sz = str.length(); + for (int i = 0; i < sz; i++) { + if (!Character.isLetter(str.charAt(i))) { + return false; } - int sz = str.length(); - for (int i = 0; i < sz; i++) { - if (Character.isLetter(str.charAt(i)) == false) { - return false; - } - } - return true; + } + return true; } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/QueueConfigurationsPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/QueueConfigurationsPBImpl.java index 80ef4b2aed2..82660130664 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/QueueConfigurationsPBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/QueueConfigurationsPBImpl.java @@ -236,12 +236,12 @@ public class QueueConfigurationsPBImpl extends QueueConfigurations { } @Override - public void setConfiguredMinCapacity(Resource configuredMinResource) { + public void setConfiguredMinCapacity(Resource minResource) { maybeInitBuilder(); - if (configuredMinResource == null) { + if (minResource == null) { builder.clearConfiguredMinCapacity(); } - this.configuredMinResource = configuredMinResource; + this.configuredMinResource = minResource; } @Override @@ -259,11 +259,11 @@ public class QueueConfigurationsPBImpl extends QueueConfigurations { } @Override - public void setConfiguredMaxCapacity(Resource configuredMaxResource) { + public void setConfiguredMaxCapacity(Resource maxResource) { maybeInitBuilder(); if (configuredMaxResource == null) { builder.clearConfiguredMaxCapacity(); } - this.configuredMaxResource = configuredMaxResource; + this.configuredMaxResource = maxResource; } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/DominantResourceCalculator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/DominantResourceCalculator.java index 26ddc18cc51..6fed23b4c2a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/DominantResourceCalculator.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/DominantResourceCalculator.java @@ -515,7 +515,7 @@ public class DominantResourceCalculator extends ResourceCalculator { } return ret; } - + @Override public Resource multiplyAndNormalizeUp(Resource r, double by, Resource stepFactor) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceCalculator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceCalculator.java index dfd6684322d..1c42126019e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceCalculator.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceCalculator.java @@ -127,12 +127,12 @@ public abstract class ResourceCalculator { Resource r, double by, Resource stepFactor); /** - * Multiply resource r by factor by + * Multiply resource r by factor by * and normalize up using step-factor stepFactor. - * + * * @param r resource to be multiplied * @param by multiplier array for all resource types - * @param stepFactor factor by which to normalize up + * @param stepFactor factor by which to normalize up * @return resulting normalized resource */ public abstract Resource multiplyAndNormalizeUp( @@ -149,7 +149,7 @@ public abstract class ResourceCalculator { */ public abstract Resource multiplyAndNormalizeDown( Resource r, double by, Resource stepFactor); - + /** * Normalize resource r given the base * minimumResource and verify against max allowed @@ -162,9 +162,7 @@ public abstract class ResourceCalculator { * @return normalized resource */ public abstract Resource normalize(Resource r, Resource minimumResource, - Resource maximumResource, - Resource stepFactor); - + Resource maximumResource, Resource stepFactor); /** * Round-up resource r given factor stepFactor. diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractResourceUsage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractResourceUsage.java index 3203543f82c..1406fec9234 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractResourceUsage.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractResourceUsage.java @@ -55,7 +55,10 @@ public class AbstractResourceUsage { usages.put(CommonNodeLabelsManager.NO_LABEL, noLabelUsages); } - // Usage enum here to make implement cleaner + /** + * Use enum here to make implementation more cleaner and readable. + * Indicates array index for each resource usage type. + */ public enum ResourceType { // CACHED_USED and CACHED_PENDING may be read by anyone, but must only // be written by ordering policies @@ -70,6 +73,9 @@ public class AbstractResourceUsage { } } + /** + * UsageByLabel stores resource array for all resource usage types. + */ public static class UsageByLabel { // usage by label, contains all UsageType private final AtomicReferenceArray resArr; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ResourceUsage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ResourceUsage.java index ede4aec1dd2..711a468232a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ResourceUsage.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ResourceUsage.java @@ -18,13 +18,7 @@ package org.apache.hadoop.yarn.server.resourcemanager.scheduler; -import java.util.HashMap; -import java.util.Map; import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueue.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueue.java index 624fcc7c9ae..6d79b6a3ce5 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueue.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueue.java @@ -366,11 +366,21 @@ public interface CSQueue extends SchedulerQueue { public QueueResourceQuotas getQueueResourceQuotas(); /** - * Get CapacityConfigType as PERCENTAGE or ABSOLUTE_RESOURCE + * Get CapacityConfigType as PERCENTAGE or ABSOLUTE_RESOURCE. * @return CapacityConfigType */ public CapacityConfigType getCapacityConfigType(); + /** + * Get effective capacity of queue. If min/max resource is configured, + * preference will be given to absolute configuration over normal capacity. + * + * @param label + * partition + * @return effective queue capacity + */ + Resource getEffectiveCapacity(String label); + /** * Get effective capacity of queue. If min/max resource is configured, * preference will be given to absolute configuration over normal capacity. @@ -378,11 +388,22 @@ public interface CSQueue extends SchedulerQueue { * * @param label * partition + * @param factor + * factor to normalize down * @return effective queue capacity */ - Resource getEffectiveCapacity(String label); Resource getEffectiveCapacityDown(String label, Resource factor); + /** + * Get effective max capacity of queue. If min/max resource is configured, + * preference will be given to absolute configuration over normal capacity. + * + * @param label + * partition + * @return effective max queue capacity + */ + Resource getEffectiveMaxCapacity(String label); + /** * Get effective max capacity of queue. If min/max resource is configured, * preference will be given to absolute configuration over normal capacity. @@ -390,8 +411,9 @@ public interface CSQueue extends SchedulerQueue { * * @param label * partition + * @param factor + * factor to normalize down * @return effective max queue capacity */ - Resource getEffectiveMaxCapacity(String label); Resource getEffectiveMaxCapacityDown(String label, Resource factor); } diff --git a/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 b/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 index e47c8d07f1f..a33d81aff4b 100644 --- a/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 +++ b/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 @@ -32,6 +32,7 @@ import org.apache.hadoop.yarn.api.records.QueueACL; import org.apache.hadoop.yarn.api.records.QueueState; import org.apache.hadoop.yarn.api.records.ReservationACL; import org.apache.hadoop.yarn.api.records.Resource; +import org.apache.hadoop.yarn.api.records.ResourceInformation; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; import org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager; @@ -320,7 +321,7 @@ public class CapacitySchedulerConfiguration extends ReservationSchedulerConfigur @Private public static final int DEFAULT_MAX_ASSIGN_PER_HEARTBEAT = -1; - /** Configuring absolute min/max resources in a queue **/ + /** Configuring absolute min/max resources in a queue. **/ @Private public static final String MINIMUM_RESOURCE = "min-resource"; @@ -333,6 +334,9 @@ public class CapacitySchedulerConfiguration extends ReservationSchedulerConfigur private static final Pattern RESOURCE_PATTERN = Pattern.compile(PATTERN_FOR_ABSOLUTE_RESOURCE); + /** + * Different resource types supported. + */ public enum AbsoluteResourceType { MEMORY, VCORES; } @@ -1825,7 +1829,7 @@ public class CapacitySchedulerConfiguration extends ReservationSchedulerConfigur } // Define resource here. - Resource resource = Resource.newInstance(0l, 0); + Resource resource = Resource.newInstance(0L, 0); Matcher matcher = RESOURCE_PATTERN.matcher(resourceString); /* @@ -1852,7 +1856,7 @@ public class CapacitySchedulerConfiguration extends ReservationSchedulerConfigur } // Memory has to be configured always. - if (resource.getMemorySize() == 0l) { + if (resource.getMemorySize() == 0L) { return Resources.none(); } @@ -1884,14 +1888,16 @@ public class CapacitySchedulerConfiguration extends ReservationSchedulerConfigur AbsoluteResourceType resType = AbsoluteResourceType .valueOf(StringUtils.toUpperCase(splits[0].trim())); switch (resType) { - case MEMORY : - resource.setMemorySize(resourceValue); - break; - case VCORES : - resource.setVirtualCores(resourceValue.intValue()); - break; - default : - break; + case MEMORY : + resource.setMemorySize(resourceValue); + break; + case VCORES : + resource.setVirtualCores(resourceValue.intValue()); + break; + default : + resource.setResourceInformation(splits[0].trim(), ResourceInformation + .newInstance(splits[0].trim(), units, resourceValue)); + break; } } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservations.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservations.java index 08557203f61..870588715da 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservations.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservations.java @@ -904,12 +904,11 @@ public class TestReservations { String host_1 = "host_1"; FiCaSchedulerNode node_1 = TestUtils.getMockNode(host_1, DEFAULT_RACK, 0, 8 * GB); - + Resource clusterResource = Resources.createResource(2 * 8 * GB); root.updateClusterResource(clusterResource, new ResourceLimits(clusterResource)); - // Setup resource-requests Priority p = TestUtils.createMockPriority(5); SchedulerRequestKey priorityMap = toSchedulerKey(p);