From ec7594155fbe573af29426f470d67c4de8e3e4c9 Mon Sep 17 00:00:00 2001 From: Adam Antal Date: Thu, 29 Aug 2019 17:55:48 +0200 Subject: [PATCH] YARN-9637. Make SLS wrapper class name configurable --- .../org/apache/hadoop/yarn/sls/SLSRunner.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/SLSRunner.java b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/SLSRunner.java index 6ed28d90d8c..210f927bd2e 100644 --- a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/SLSRunner.java +++ b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/SLSRunner.java @@ -262,20 +262,25 @@ public void start() throws IOException, ClassNotFoundException, YarnException, private void startRM() throws ClassNotFoundException, YarnException { Configuration rmConf = new YarnConfiguration(getConf()); - String schedulerClass = rmConf.get(YarnConfiguration.RM_SCHEDULER); - - if (Class.forName(schedulerClass) == CapacityScheduler.class) { - rmConf.set(YarnConfiguration.RM_SCHEDULER, - SLSCapacityScheduler.class.getName()); - rmConf.setBoolean(YarnConfiguration.RM_SCHEDULER_ENABLE_MONITORS, true); - rmConf.set(YarnConfiguration.RM_SCHEDULER_MONITOR_POLICIES, - ProportionalCapacityPreemptionPolicy.class.getName()); - } else if (Class.forName(schedulerClass) == FairScheduler.class) { - rmConf.set(YarnConfiguration.RM_SCHEDULER, - SLSFairScheduler.class.getName()); - } else if (Class.forName(schedulerClass) == FifoScheduler.class) { - // TODO add support for FifoScheduler - throw new YarnException("Fifo Scheduler is not supported yet."); + Class slsSchedulerClass = rmConf.getClass(SLSConfiguration.RM_SCHEDULER, + null, SchedulerWrapper.class); + if (slsSchedulerClass == null) { + String rmSchedulerClass = rmConf.get(YarnConfiguration.RM_SCHEDULER); + if (Class.forName(rmSchedulerClass) == CapacityScheduler.class) { + rmConf.set(YarnConfiguration.RM_SCHEDULER, + SLSCapacityScheduler.class.getName()); + rmConf.setBoolean(YarnConfiguration.RM_SCHEDULER_ENABLE_MONITORS, true); + rmConf.set(YarnConfiguration.RM_SCHEDULER_MONITOR_POLICIES, + ProportionalCapacityPreemptionPolicy.class.getName()); + } else if (Class.forName(rmSchedulerClass) == FairScheduler.class) { + rmConf.set(YarnConfiguration.RM_SCHEDULER, + SLSFairScheduler.class.getName()); + } else if (Class.forName(rmSchedulerClass) == FifoScheduler.class) { + throw new YarnException("Fifo Scheduler is not supported yet."); + } + } else { + rmConf.setClass(YarnConfiguration.RM_SCHEDULER, slsSchedulerClass, + SchedulerWrapper.class); } rmConf.setClass( CommonConfigurationKeysPublic.NET_TOPOLOGY_NODE_SWITCH_MAPPING_IMPL_KEY, -- 2.21.0