From 06f8372be0b77cb0e30ac6ef0a19bf0a4258806f Mon Sep 17 00:00:00 2001 From: "tanu.ajmera" Date: Wed, 15 Apr 2020 14:46:21 +0530 Subject: [PATCH] YARN-10102. Support added for %specified mapping --- .../resourcemanager/placement/QueueMapping.java | 2 +- .../placement/UserGroupMappingPlacementRule.java | 7 +++++-- .../placement/TestUserGroupMappingPlacementRule.java | 12 ++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) 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 bd0e0e296cd..c879ecf7000 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 @@ -83,7 +83,7 @@ private QueueMapping(QueueMappingBuilder builder) { */ public enum MappingType { - USER("u"), GROUP("g"); + USER("u"), GROUP("g"), SPECIFIED("s"); private final String type; 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/UserGroupMappingPlacementRule.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/UserGroupMappingPlacementRule.java index 6dce9c76c91..111b16880cd 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/UserGroupMappingPlacementRule.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/UserGroupMappingPlacementRule.java @@ -92,7 +92,7 @@ private String getSecondaryGroup(String user) throws IOException { return secondaryGroup; } - private ApplicationPlacementContext getPlacementForUser(String user) + private ApplicationPlacementContext getPlacementForUser(String user, String queueName) throws IOException { for (QueueMapping mapping : mappings) { if (mapping.getType() == MappingType.USER) { @@ -176,6 +176,9 @@ private ApplicationPlacementContext getPlacementForUser(String user) } } } + if (mapping.getType() == MappingType.SPECIFIED) { + return getPlacementContext(mapping, queueName); + } } return null; } @@ -188,7 +191,7 @@ public ApplicationPlacementContext getPlacementForApp( ApplicationId applicationId = asc.getApplicationId(); if (mappings != null && mappings.size() > 0) { try { - ApplicationPlacementContext mappedQueue = getPlacementForUser(user); + ApplicationPlacementContext mappedQueue = getPlacementForUser(user, queueName); if (mappedQueue != null) { // We have a mapping, should we use it? if (queueName.equals(YarnConfiguration.DEFAULT_QUEUE_NAME) 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/TestUserGroupMappingPlacementRule.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestUserGroupMappingPlacementRule.java index e663a14c462..795d4fe0000 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestUserGroupMappingPlacementRule.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestUserGroupMappingPlacementRule.java @@ -129,6 +129,18 @@ public void testSecondaryGroupMapping() throws YarnException { .build()); } + @Test + public void testSpecifiedGroupMapping() throws YarnException { + verifyQueueMapping( + QueueMappingTestDataBuilder.create() + .queueMapping(QueueMappingBuilder.create() + .type(MappingType.SPECIFIED).build()) + .inputUser("a") + .inputQueue("q1") + .expectedQueue("q1") + .build()); + } + @Test public void testNullGroupMapping() throws YarnException { conf.setClass(CommonConfigurationKeys.HADOOP_SECURITY_GROUP_MAPPING, -- 2.25.0