|
@@ -23,7 +23,6 @@ import com.google.common.base.Preconditions;
|
|
|
import com.google.common.util.concurrent.SettableFuture;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
-import java.io.InputStream;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
|
import java.util.EnumSet;
|
|
@@ -108,6 +107,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.Activi
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivityDiagnosticConstant;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivityState;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.AllocationState;
|
|
|
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.conf.CSConfigurationProvider;
|
|
|
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.conf.FileBasedCSConfigurationProvider;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.preemption.KillableContainer;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.preemption.PreemptionManager;
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.common.AssignmentInformation;
|
|
@@ -168,6 +169,8 @@ public class CapacityScheduler extends
|
|
|
|
|
|
private int maxAssignPerHeartbeat;
|
|
|
|
|
|
+ private CSConfigurationProvider csConfProvider;
|
|
|
+
|
|
|
@Override
|
|
|
public void setConf(Configuration conf) {
|
|
|
yarnConf = conf;
|
|
@@ -290,7 +293,18 @@ public class CapacityScheduler extends
|
|
|
IOException {
|
|
|
try {
|
|
|
writeLock.lock();
|
|
|
- this.conf = loadCapacitySchedulerConfiguration(configuration);
|
|
|
+ String confProviderStr = configuration.get(
|
|
|
+ CapacitySchedulerConfiguration.CS_CONF_PROVIDER,
|
|
|
+ CapacitySchedulerConfiguration.DEFAULT_CS_CONF_PROVIDER);
|
|
|
+ if (confProviderStr.equals(
|
|
|
+ CapacitySchedulerConfiguration.FILE_CS_CONF_PROVIDER)) {
|
|
|
+ this.csConfProvider = new FileBasedCSConfigurationProvider(rmContext);
|
|
|
+ } else {
|
|
|
+ throw new IOException("Invalid CS configuration provider: " +
|
|
|
+ confProviderStr);
|
|
|
+ }
|
|
|
+ this.csConfProvider.init(configuration);
|
|
|
+ this.conf = this.csConfProvider.loadConfiguration(configuration);
|
|
|
validateConf(this.conf);
|
|
|
this.minimumAllocation = this.conf.getMinimumAllocation();
|
|
|
initMaximumResourceCapability(this.conf.getMaximumAllocation());
|
|
@@ -400,7 +414,7 @@ public class CapacityScheduler extends
|
|
|
writeLock.lock();
|
|
|
Configuration configuration = new Configuration(newConf);
|
|
|
CapacitySchedulerConfiguration oldConf = this.conf;
|
|
|
- this.conf = loadCapacitySchedulerConfiguration(configuration);
|
|
|
+ this.conf = csConfProvider.loadConfiguration(configuration);
|
|
|
validateConf(this.conf);
|
|
|
try {
|
|
|
LOG.info("Re-initializing queues...");
|
|
@@ -1832,23 +1846,6 @@ public class CapacityScheduler extends
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- private CapacitySchedulerConfiguration loadCapacitySchedulerConfiguration(
|
|
|
- Configuration configuration) throws IOException {
|
|
|
- try {
|
|
|
- InputStream CSInputStream =
|
|
|
- this.rmContext.getConfigurationProvider()
|
|
|
- .getConfigurationInputStream(configuration,
|
|
|
- YarnConfiguration.CS_CONFIGURATION_FILE);
|
|
|
- if (CSInputStream != null) {
|
|
|
- configuration.addResource(CSInputStream);
|
|
|
- return new CapacitySchedulerConfiguration(configuration, false);
|
|
|
- }
|
|
|
- return new CapacitySchedulerConfiguration(configuration, true);
|
|
|
- } catch (Exception e) {
|
|
|
- throw new IOException(e);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
private String getDefaultReservationQueueName(String planQueueName) {
|
|
|
return planQueueName + ReservationConstants.DEFAULT_QUEUE_SUFFIX;
|
|
|
}
|