From 302fa7d97c5bce841a11e9efd37a0273649a008d Mon Sep 17 00:00:00 2001 From: Gergely Pollak Date: Thu, 28 May 2020 15:23:22 +0200 Subject: [PATCH] YARN-10274 Merge QueueMapping and QueueMappingEntity --- .../AppNameMappingPlacementRule.java | 18 ++-- .../placement/QueueMapping.java | 15 ++- .../placement/QueueMappingEntity.java | 98 ------------------- .../placement/QueuePlacementRuleUtils.java | 23 +++-- .../CapacitySchedulerConfiguration.java | 22 ++--- .../TestAppNameMappingPlacementRule.java | 22 +++-- .../placement/TestPlacementManager.java | 8 +- ...tCapacitySchedulerQueueMappingFactory.java | 14 +-- 8 files changed, 74 insertions(+), 146 deletions(-) delete mode 100644 hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMappingEntity.java diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/AppNameMappingPlacementRule.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/AppNameMappingPlacementRule.java index c8a29b46e7d..cf725b62862 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/AppNameMappingPlacementRule.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/AppNameMappingPlacementRule.java @@ -48,7 +48,7 @@ private static final String QUEUE_MAPPING_NAME = "app-name"; private boolean overrideWithQueueMappings = false; - private List mappings = null; + private List mappings = null; protected CapacitySchedulerQueueManager queueManager; public AppNameMappingPlacementRule() { @@ -56,7 +56,7 @@ public AppNameMappingPlacementRule() { } public AppNameMappingPlacementRule(boolean overrideWithQueueMappings, - List newMappings) { + List newMappings) { this.overrideWithQueueMappings = overrideWithQueueMappings; this.mappings = newMappings; } @@ -76,16 +76,16 @@ public boolean initialize(ResourceScheduler scheduler) LOG.info( "Initialized App Name queue mappings, override: " + overrideWithQueueMappings); - List queueMappings = + List queueMappings = conf.getQueueMappingEntity(QUEUE_MAPPING_NAME); // Get new user mappings - List newMappings = new ArrayList<>(); + List newMappings = new ArrayList<>(); queueManager = schedulerContext.getCapacitySchedulerQueueManager(); // check if mappings refer to valid queues - for (QueueMappingEntity mapping : queueMappings) { + for (QueueMapping mapping : queueMappings) { QueuePath queuePath = mapping.getQueuePath(); if (isStaticQueueMapping(mapping)) { @@ -109,7 +109,7 @@ public boolean initialize(ResourceScheduler scheduler) //validate if parent queue is specified, // then it should exist and // be an instance of AutoCreateEnabledParentQueue - QueueMappingEntity newMapping = + QueueMapping newMapping = validateAndGetAutoCreatedQueueMapping(queueManager, mapping, queuePath); if (newMapping == null) { @@ -123,7 +123,7 @@ public boolean initialize(ResourceScheduler scheduler) // if its an instance of leaf queue // if its an instance of auto created leaf queue, // then extract parent queue name and update queue mapping - QueueMappingEntity newMapping = validateAndGetQueueMapping( + QueueMapping newMapping = validateAndGetQueueMapping( queueManager, queue, mapping, queuePath); newMappings.add(newMapping); } @@ -134,7 +134,7 @@ public boolean initialize(ResourceScheduler scheduler) // if parent queue is specified, then // parent queue exists and an instance of AutoCreateEnabledParentQueue // - QueueMappingEntity newMapping = validateAndGetAutoCreatedQueueMapping( + QueueMapping newMapping = validateAndGetAutoCreatedQueueMapping( queueManager, mapping, queuePath); if (newMapping != null) { newMappings.add(newMapping); @@ -160,7 +160,7 @@ private static boolean ifQueueDoesNotExist(CSQueue queue) { private ApplicationPlacementContext getAppPlacementContext(String user, String applicationName) throws IOException { - for (QueueMappingEntity mapping : mappings) { + for (QueueMapping mapping : mappings) { if (mapping.getSource().equals(CURRENT_APP_MAPPING)) { if (mapping.getQueue().equals(CURRENT_APP_MAPPING)) { return getPlacementContext(mapping, applicationName, queueManager); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMapping.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMapping.java index c3b3cc62a48..3fcb5fe6b83 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMapping.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMapping.java @@ -82,6 +82,7 @@ private QueueMapping(QueueMappingBuilder builder) { this.source = builder.source; this.queue = builder.queue; this.parentQueue = builder.parentQueue; + this.fullPath = (parentQueue != null) ? (parentQueue + DOT + queue) : queue; } /** @@ -89,8 +90,9 @@ private QueueMapping(QueueMappingBuilder builder) { * */ public enum MappingType { - - USER("u"), GROUP("g"); + USER("u"), + GROUP("g"), + APPLICATION("a"); private final String type; @@ -108,6 +110,7 @@ public String toString() { private String source; private String queue; private String parentQueue; + private String fullPath; private final static String DELIMITER = ":"; @@ -132,7 +135,7 @@ public String getSource() { } public String getFullPath() { - return (parentQueue != null ? parentQueue + DOT + queue : queue); + return fullPath; } public QueuePath getQueuePath() { @@ -197,4 +200,10 @@ public String toString() { return type.toString() + DELIMITER + source + DELIMITER + (parentQueue != null ? parentQueue + "." + queue : queue); } + + public String toTypelessString() { + return source + DELIMITER + + (parentQueue != null ? parentQueue + "." + queue : queue); + } + } \ No newline at end of file diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMappingEntity.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMappingEntity.java deleted file mode 100644 index ccb611a6c1a..00000000000 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMappingEntity.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hadoop.yarn.server.resourcemanager.placement; - -import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.DOT; - -public class QueueMappingEntity { - private String source; - private String queue; - private String parentQueue; - private String fullPath; - - public final static String DELIMITER = ":"; - - public QueueMappingEntity(String source, String queue) { - this.source = source; - this.queue = queue; - this.parentQueue = null; - this.fullPath = queue; - } - public QueueMappingEntity(String source, String queue, String parentQueue) { - this.source = source; - this.queue = queue; - this.parentQueue = parentQueue; - this.fullPath = parentQueue + DOT + queue; - } - - public QueueMappingEntity(String source, QueuePath path) { - this.source = source; - this.queue = path.getLeafQueue(); - this.parentQueue = path.getParentQueue(); - this.fullPath = parentQueue + DOT + queue; - } - - public String getQueue() { - return queue; - } - - public String getParentQueue() { - return parentQueue; - } - - public String getFullPath() { - return fullPath; - } - - public String getSource() { - return source; - } - - public boolean hasParentQueue() { - return parentQueue != null; - } - - public QueuePath getQueuePath() { - //This is to make sure the parsing is the same everywhere, but the - //whole parsing part should be moved to QueuePathConstructor - return QueuePlacementRuleUtils.extractQueuePath(getFullPath()); - } - - @Override - public int hashCode() { - return super.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof QueueMappingEntity) { - QueueMappingEntity other = (QueueMappingEntity) obj; - return (other.source.equals(source) && - other.queue.equals(queue)); - } else { - return false; - } - } - - public String toString() { - return source + DELIMITER + (parentQueue != null ? - parentQueue + DOT + queue : - queue); - } -} diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueuePlacementRuleUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueuePlacementRuleUtils.java index b9b35c1007d..350f2b93d8c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueuePlacementRuleUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueuePlacementRuleUtils.java @@ -65,8 +65,8 @@ public static void validateQueueMappingUnderParentQueue( } } - public static QueueMappingEntity validateAndGetAutoCreatedQueueMapping( - CapacitySchedulerQueueManager queueManager, QueueMappingEntity mapping, + public static QueueMapping validateAndGetAutoCreatedQueueMapping( + CapacitySchedulerQueueManager queueManager, QueueMapping mapping, QueuePath queuePath) throws IOException { if (queuePath.hasParentQueue()) { //if parent queue is specified, @@ -74,16 +74,19 @@ public static QueueMappingEntity validateAndGetAutoCreatedQueueMapping( validateQueueMappingUnderParentQueue(queueManager.getQueue( queuePath.getParentQueue()), queuePath.getParentQueue(), queuePath.getFullPath()); - return new QueueMappingEntity(mapping.getSource(), - queuePath.getFullPath(), queuePath.getParentQueue()); + return QueueMapping.QueueMappingBuilder.create() + .type(mapping.getType()) + .source(mapping.getSource()) + .queuePath(queuePath) + .build(); } return null; } - public static QueueMappingEntity validateAndGetQueueMapping( + public static QueueMapping validateAndGetQueueMapping( CapacitySchedulerQueueManager queueManager, CSQueue queue, - QueueMappingEntity mapping, QueuePath queuePath) throws IOException { + QueueMapping mapping, QueuePath queuePath) throws IOException { if (!(queue instanceof LeafQueue)) { throw new IOException( "mapping contains invalid or non-leaf queue : " + @@ -93,7 +96,7 @@ public static QueueMappingEntity validateAndGetQueueMapping( if (queue instanceof AutoCreatedLeafQueue && queue .getParent() instanceof ManagedParentQueue) { - QueueMappingEntity newMapping = validateAndGetAutoCreatedQueueMapping( + QueueMapping newMapping = validateAndGetAutoCreatedQueueMapping( queueManager, mapping, queuePath); if (newMapping == null) { throw new IOException( @@ -105,7 +108,7 @@ public static QueueMappingEntity validateAndGetQueueMapping( return mapping; } - public static boolean isStaticQueueMapping(QueueMappingEntity mapping) { + public static boolean isStaticQueueMapping(QueueMapping mapping) { return !mapping.getQueue().contains(CURRENT_USER_MAPPING) && !mapping .getQueue().contains(PRIMARY_GROUP_MAPPING) && !mapping.getQueue().contains(SECONDARY_GROUP_MAPPING); @@ -126,13 +129,13 @@ public static QueuePath extractQueuePath(String queuePath) { } public static ApplicationPlacementContext getPlacementContext( - QueueMappingEntity mapping, CapacitySchedulerQueueManager queueManager) + QueueMapping mapping, CapacitySchedulerQueueManager queueManager) throws IOException { return getPlacementContext(mapping, mapping.getQueue(), queueManager); } public static ApplicationPlacementContext getPlacementContext( - QueueMappingEntity mapping, String leafQueueName, + QueueMapping mapping, String leafQueueName, CapacitySchedulerQueueManager queueManager) throws IOException { //leafQueue name no longer identifies a queue uniquely checking ambiguity 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 f060b56e939..7f4150fab16 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 @@ -42,7 +42,6 @@ import org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager; import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping; import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.QueueMappingBuilder; -import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMappingEntity; import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSchedulerConfiguration; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerUtils; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.AppPriorityACLConfigurationParser.AppPriorityACLKeyType; @@ -1039,12 +1038,12 @@ public void setOverrideWithQueueMappings(boolean overrideWithQueueMappings) { setBoolean(ENABLE_QUEUE_MAPPING_OVERRIDE, overrideWithQueueMappings); } - public List getQueueMappingEntity( + public List getQueueMappingEntity( String queueMappingSuffix) { String queueMappingName = buildQueueMappingRuleProperty(queueMappingSuffix); - List mappings = - new ArrayList(); + List mappings = + new ArrayList(); Collection mappingsString = getTrimmedStringCollection(queueMappingName); for (String mappingValue : mappingsString) { @@ -1058,10 +1057,11 @@ public void setOverrideWithQueueMappings(boolean overrideWithQueueMappings) { //Mappings should be consistent, and have the parent path parsed // from the beginning - QueueMappingEntity m = new QueueMappingEntity( - mapping[0], - QueuePlacementRuleUtils.extractQueuePath(mapping[1])); - + QueueMapping m = QueueMapping.QueueMappingBuilder.create() + .type(QueueMapping.MappingType.APPLICATION) + .source(mapping[0]) + .queuePath(QueuePlacementRuleUtils.extractQueuePath(mapping[1])) + .build(); mappings.add(m); } @@ -1076,15 +1076,15 @@ private String buildQueueMappingRuleProperty (String queueMappingSuffix) { } @VisibleForTesting - public void setQueueMappingEntities(List queueMappings, + public void setQueueMappingEntities(List queueMappings, String queueMappingSuffix) { if (queueMappings == null) { return; } List queueMappingStrs = new ArrayList<>(); - for (QueueMappingEntity mapping : queueMappings) { - queueMappingStrs.add(mapping.toString()); + for (QueueMapping mapping : queueMappings) { + queueMappingStrs.add(mapping.toTypelessString()); } String mappingRuleProp = buildQueueMappingRuleProperty(queueMappingSuffix); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestAppNameMappingPlacementRule.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestAppNameMappingPlacementRule.java index f7c7b501b2b..1204213cf91 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestAppNameMappingPlacementRule.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestAppNameMappingPlacementRule.java @@ -47,13 +47,13 @@ public void setup() { SimpleGroupsMapping.class, GroupMappingServiceProvider.class); } - private void verifyQueueMapping(QueueMappingEntity queueMapping, + private void verifyQueueMapping(QueueMapping queueMapping, String user, String expectedQueue) throws YarnException { verifyQueueMapping(queueMapping, user, queueMapping.getQueue(), expectedQueue, false); } - private void verifyQueueMapping(QueueMappingEntity queueMapping, + private void verifyQueueMapping(QueueMapping queueMapping, String user, String inputQueue, String expectedQueue, boolean overwrite) throws YarnException { AppNameMappingPlacementRule rule = new AppNameMappingPlacementRule( @@ -81,23 +81,31 @@ private void verifyQueueMapping(QueueMappingEntity queueMapping, ctx != null ? ctx.getQueue() : inputQueue); } + public QueueMapping queueMappingBuilder(String source, String queue) { + return QueueMapping.QueueMappingBuilder.create() + .type(QueueMapping.MappingType.APPLICATION) + .source(source) + .queue(queue) + .build(); + } + @Test public void testMapping() throws YarnException { // simple base case for mapping user to queue - verifyQueueMapping(new QueueMappingEntity(APP_NAME, + verifyQueueMapping(queueMappingBuilder(APP_NAME, "q1"), "user_1", "q1"); - verifyQueueMapping(new QueueMappingEntity("%application", "q2"), "user_1", + verifyQueueMapping(queueMappingBuilder("%application", "q2"), "user_1", "q2"); - verifyQueueMapping(new QueueMappingEntity("%application", "%application"), + verifyQueueMapping(queueMappingBuilder("%application", "%application"), "user_1", APP_NAME); // specify overwritten, and see if user specified a queue, and it will be // overridden - verifyQueueMapping(new QueueMappingEntity(APP_NAME, + verifyQueueMapping(queueMappingBuilder(APP_NAME, "q1"), "1", "q2", "q1", true); // if overwritten not specified, it should be which user specified - verifyQueueMapping(new QueueMappingEntity(APP_NAME, + verifyQueueMapping(queueMappingBuilder(APP_NAME, "q1"), "1", "q2", "q2", false); } } \ No newline at end of file diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestPlacementManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestPlacementManager.java index fa95caec100..22a9125576f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestPlacementManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestPlacementManager.java @@ -95,8 +95,12 @@ public void testPlaceApplicationWithPlacementRuleChain() throws Exception { Assert.assertNull("Placement should be null", pm.placeApplication(asc, USER2)); - QueueMappingEntity queueMappingEntity = new QueueMappingEntity(APP_NAME, - USER1, PARENT_QUEUE); + QueueMapping queueMappingEntity = QueueMapping.QueueMappingBuilder.create() + .type(MappingType.APPLICATION) + .source(APP_NAME) + .queue(USER1) + .parentQueue(PARENT_QUEUE) + .build(); AppNameMappingPlacementRule anRule = new AppNameMappingPlacementRule(false, Arrays.asList(queueMappingEntity)); 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/TestCapacitySchedulerQueueMappingFactory.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/TestCapacitySchedulerQueueMappingFactory.java index adad3968647..13b61d561e5 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/TestCapacitySchedulerQueueMappingFactory.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/TestCapacitySchedulerQueueMappingFactory.java @@ -29,7 +29,6 @@ import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping; import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.MappingType; import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.QueueMappingBuilder; -import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMappingEntity; import org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.SimpleGroupsMapping; @@ -84,17 +83,20 @@ public static CapacitySchedulerConfiguration setupQueueMappingsForRules( existingMappingsForUG.addAll(queueMappingsForUG); conf.setQueueMappings(existingMappingsForUG); - List existingMappingsForAN = + List existingMappingsForAN = conf.getQueueMappingEntity(QUEUE_MAPPING_NAME); //set queue mapping - List queueMappingsForAN = + List queueMappingsForAN = new ArrayList<>(); for (int i = 0; i < sourceIds.length; i++) { //Set C as parent queue name for auto queue creation - QueueMappingEntity queueMapping = - new QueueMappingEntity(USER + sourceIds[i], - getQueueMapping(parentQueue, USER + sourceIds[i])); + QueueMapping queueMapping = QueueMapping.QueueMappingBuilder.create() + .type(MappingType.APPLICATION) + .source(USER + sourceIds[i]) + .queue(getQueueMapping(parentQueue, USER + sourceIds[i])) + .build(); + queueMappingsForAN.add(queueMapping); } -- 2.26.2