YARN-9858. Optimize RMContext getExclusiveEnforcedPartitions. Contributed by Jonathan Hung.
This commit is contained in:
parent
dc2b838a8e
commit
c57e6bc385
|
@ -23,7 +23,9 @@ import java.util.ArrayList;
|
|||
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;
|
||||
|
@ -3213,6 +3215,20 @@ public class YarnConfiguration extends Configuration {
|
|||
public static final String EXCLUSIVE_ENFORCED_PARTITIONS = NODE_LABELS_PREFIX
|
||||
+ EXCLUSIVE_ENFORCED_PARTITIONS_SUFFIX;
|
||||
|
||||
@Private
|
||||
public static Set<String> getExclusiveEnforcedPartitions(
|
||||
Configuration conf) {
|
||||
Set<String> 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";
|
||||
|
||||
|
|
|
@ -101,11 +101,14 @@ final class DefaultAMSProcessor implements ApplicationMasterServiceProcessor {
|
|||
RecordFactoryProvider.getRecordFactory(null);
|
||||
|
||||
private RMContext rmContext;
|
||||
private Set<String> exclusiveEnforcedPartitions;
|
||||
|
||||
@Override
|
||||
public void init(ApplicationMasterServiceContext amsContext,
|
||||
ApplicationMasterServiceProcessor nextProcessor) {
|
||||
this.rmContext = (RMContext)amsContext;
|
||||
this.exclusiveEnforcedPartitions = YarnConfiguration
|
||||
.getExclusiveEnforcedPartitions(rmContext.getYarnConfiguration());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -209,8 +212,7 @@ final class DefaultAMSProcessor implements ApplicationMasterServiceProcessor {
|
|||
}
|
||||
if (ResourceRequest.ANY.equals(req.getResourceName())) {
|
||||
SchedulerUtils.enforcePartitionExclusivity(req,
|
||||
getRmContext().getExclusiveEnforcedPartitions(),
|
||||
asc.getNodeLabelExpression());
|
||||
exclusiveEnforcedPartitions, asc.getNodeLabelExpression());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -112,7 +112,8 @@ public class RMAppManager implements EventHandler<RMAppManagerEvent>,
|
|||
this.maxCompletedAppsInStateStore = this.maxCompletedAppsInMemory;
|
||||
}
|
||||
this.authorizer = YarnAuthorizationProvider.getInstance(conf);
|
||||
this.exclusiveEnforcedPartitions = context.getExclusiveEnforcedPartitions();
|
||||
this.exclusiveEnforcedPartitions = YarnConfiguration
|
||||
.getExclusiveEnforcedPartitions(rmContext.getYarnConfiguration());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
|
@ -162,7 +161,4 @@ public interface RMContext extends ApplicationMasterServiceContext {
|
|||
ResourceManager getResourceManager();
|
||||
|
||||
String getAppProxyUrl(Configuration conf, ApplicationId applicationId);
|
||||
|
||||
Set<String> getExclusiveEnforcedPartitions();
|
||||
|
||||
}
|
||||
|
|
|
@ -21,8 +21,6 @@ package org.apache.hadoop.yarn.server.resourcemanager;
|
|||
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.LocalConfigurationProvider;
|
|||
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;
|
||||
|
@ -585,20 +582,4 @@ public class RMContextImpl implements RMContext {
|
|||
return UNAVAILABLE;
|
||||
}
|
||||
}
|
||||
|
||||
public Set<String> getExclusiveEnforcedPartitions() {
|
||||
Set<String> 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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -154,6 +154,7 @@ public class TestAppManager{
|
|||
metricsPublisher = mock(SystemMetricsPublisher.class);
|
||||
context.setSystemMetricsPublisher(metricsPublisher);
|
||||
context.setRMApplicationHistoryWriter(writer);
|
||||
((RMContextImpl) context).setYarnConfiguration(new YarnConfiguration());
|
||||
return context;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue