From 42358169f6739f439d9d2a11f6ef857ccadaad99 Mon Sep 17 00:00:00 2001 From: Szilard Nemeth Date: Tue, 13 Oct 2020 10:11:10 +0200 Subject: [PATCH] YARN-10454: Add applicationName policy. Contributed by Peter Bacsko --- .../capacity/placement/MappingRuleCreator.java | 5 +++++ .../json_schema/MappingRulesDescription.json | 1 + .../placement/TestMappingRuleCreator.java | 17 ++++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) 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/placement/MappingRuleCreator.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/placement/MappingRuleCreator.java index 717e5bb18ec..d042fa4f9b6 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/placement/MappingRuleCreator.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/placement/MappingRuleCreator.java @@ -166,6 +166,11 @@ private MappingRuleAction createAction(Rule rule) { getTargetQueue(rule.getParentQueue(), "%user"), create); break; + case APPLICATION_NAME: + action = MappingRuleActions.createPlaceToQueueAction( + getTargetQueue(rule.getParentQueue(), + "%application"), create); + break; case SET_DEFAULT_QUEUE: String defaultQueue = rule.getValue(); checkArgument(defaultQueue != null, "default queue is undefined"); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/json_schema/MappingRulesDescription.json b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/json_schema/MappingRulesDescription.json index 69551844706..f74830dc2f0 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/json_schema/MappingRulesDescription.json +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/json_schema/MappingRulesDescription.json @@ -40,6 +40,7 @@ "secondaryGroup", "primaryGroupUser", "secondaryGroupUser", + "applicationName", "setDefaultQueue", "custom" ] }, "parentQueue": { "type": "string" }, 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/placement/TestMappingRuleCreator.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/placement/TestMappingRuleCreator.java index d91e9bddd90..778adcbce3a 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/placement/TestMappingRuleCreator.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/placement/TestMappingRuleCreator.java @@ -43,7 +43,7 @@ public class TestMappingRuleCreator { private static final String DEFAULT_QUEUE = "root.default"; private static final String SECONDARY_GROUP = "users"; private static final String PRIMARY_GROUP = "superuser"; - private static final String APPLICATION_NAME = "MapReduce"; + private static final String APPLICATION_NAME = "testapplication"; private static final String SPECIFIED_QUEUE = "root.users.hadoop"; private static final String USER_NAME = "testuser"; @@ -316,6 +316,21 @@ public void testSecondaryGroupNestedRuleWithParent() { verifyPlacementSucceeds("root.users.testuser"); } + @Test + public void testApplicationNamePlacement() { + rule.setPolicy(Policy.APPLICATION_NAME); + + verifyPlacementSucceeds(APPLICATION_NAME); + } + + @Test + public void testApplicationNamePlacementWithParent() { + rule.setPolicy(Policy.APPLICATION_NAME); + rule.setParentQueue("root.applications"); + + verifyPlacementSucceeds("root.applications." + APPLICATION_NAME); + } + @Test public void testDefaultQueueFallback() { rule.setFallbackResult(FallbackResult.PLACE_DEFAULT);