diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java index 48d3933ecbb..cdaa596b83b 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java @@ -23,7 +23,9 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.apache.hadoop.HadoopIllegalArgumentException; import org.apache.hadoop.classification.InterfaceAudience.Private; @@ -3487,6 +3489,20 @@ public static boolean isAclEnabled(Configuration conf) { public static final String EXCLUSIVE_ENFORCED_PARTITIONS = NODE_LABELS_PREFIX + EXCLUSIVE_ENFORCED_PARTITIONS_SUFFIX; + @Private + public static Set getExclusiveEnforcedPartitions( + Configuration conf) { + Set exclusiveEnforcedPartitions = new HashSet<>(); + String[] configuredPartitions = conf.getStrings( + EXCLUSIVE_ENFORCED_PARTITIONS); + if (configuredPartitions != null) { + for (String partition : configuredPartitions) { + exclusiveEnforcedPartitions.add(partition); + } + } + return exclusiveEnforcedPartitions; + } + public static final String MAX_CLUSTER_LEVEL_APPLICATION_PRIORITY = YARN_PREFIX + "cluster.max-application-priority"; diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/DefaultAMSProcessor.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/DefaultAMSProcessor.java index a8b394e6e5f..8a4885880b3 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/DefaultAMSProcessor.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/DefaultAMSProcessor.java @@ -109,6 +109,7 @@ private RMContext rmContext; private ResourceProfilesManager resourceProfilesManager; private boolean timelineServiceV2Enabled; + private Set exclusiveEnforcedPartitions; @Override public void init(ApplicationMasterServiceContext amsContext, @@ -117,6 +118,8 @@ public void init(ApplicationMasterServiceContext amsContext, this.resourceProfilesManager = rmContext.getResourceProfilesManager(); this.timelineServiceV2Enabled = YarnConfiguration. timelineServiceV2Enabled(rmContext.getYarnConfiguration()); + this.exclusiveEnforcedPartitions = YarnConfiguration + .getExclusiveEnforcedPartitions(rmContext.getYarnConfiguration()); } @Override @@ -227,8 +230,7 @@ public void allocate(ApplicationAttemptId appAttemptId, } if (ResourceRequest.ANY.equals(req.getResourceName())) { SchedulerUtils.enforcePartitionExclusivity(req, - getRmContext().getExclusiveEnforcedPartitions(), - asc.getNodeLabelExpression()); + exclusiveEnforcedPartitions, asc.getNodeLabelExpression()); } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java index 1a4bb73bd97..d1e666ab80b 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMAppManager.java @@ -121,7 +121,8 @@ public RMAppManager(RMContext context, this.authorizer = YarnAuthorizationProvider.getInstance(conf); this.timelineServiceV2Enabled = YarnConfiguration. timelineServiceV2Enabled(conf); - this.exclusiveEnforcedPartitions = context.getExclusiveEnforcedPartitions(); + this.exclusiveEnforcedPartitions = YarnConfiguration + .getExclusiveEnforcedPartitions(rmContext.getYarnConfiguration()); } /** diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContext.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContext.java index 55d4073626c..eb91a311a3a 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContext.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContext.java @@ -19,7 +19,6 @@ package org.apache.hadoop.yarn.server.resourcemanager; import java.nio.ByteBuffer; -import java.util.Set; import java.util.concurrent.ConcurrentMap; import org.apache.hadoop.conf.Configuration; @@ -178,7 +177,4 @@ void setRMDelegatedNodeLabelsUpdater( void setPlacementConstraintManager( PlacementConstraintManager placementConstraintManager); - - Set getExclusiveEnforcedPartitions(); - } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContextImpl.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContextImpl.java index 406306adac6..84e0f6f6b58 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContextImpl.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContextImpl.java @@ -21,8 +21,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.nio.ByteBuffer; -import java.util.HashSet; -import java.util.Set; import java.util.concurrent.ConcurrentMap; import org.apache.commons.logging.Log; @@ -35,7 +33,6 @@ import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.conf.ConfigurationProvider; -import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.Dispatcher; import org.apache.hadoop.yarn.server.resourcemanager.ahs.RMApplicationHistoryWriter; import org.apache.hadoop.yarn.server.resourcemanager.metrics.SystemMetricsPublisher; @@ -623,20 +620,4 @@ public void setResourceProfilesManager(ResourceProfilesManager mgr) { this.activeServiceContext.setResourceProfilesManager(mgr); } // Note: Read java doc before adding any services over here. - - public Set getExclusiveEnforcedPartitions() { - Set exclusiveEnforcedPartitions = new HashSet<>(); - Configuration conf = getYarnConfiguration(); - if (conf == null) { - return new HashSet<>(); - } - String[] configuredPartitions = conf.getStrings( - YarnConfiguration.EXCLUSIVE_ENFORCED_PARTITIONS); - if (configuredPartitions != null) { - for (String partition : configuredPartitions) { - exclusiveEnforcedPartitions.add(partition); - } - } - return exclusiveEnforcedPartitions; - } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java index fcc865ad007..6a9c146fb09 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java @@ -166,6 +166,7 @@ public RMContext mockRMContext(int n, long time) { metricsPublisher = mock(SystemMetricsPublisher.class); context.setSystemMetricsPublisher(metricsPublisher); context.setRMApplicationHistoryWriter(writer); + ((RMContextImpl) context).setYarnConfiguration(new YarnConfiguration()); return context; }