You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ww...@apache.org on 2019/06/21 10:00:34 UTC
[hadoop] branch branch-3.2 updated: YARN-9209. When nodePartition
is not set in Placement Constraints,
containers are allocated only in default partition. Contributed by Tarun
Parimi.
This is an automated email from the ASF dual-hosted git repository.
wwei pushed a commit to branch branch-3.2
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/branch-3.2 by this push:
new 1944a7d YARN-9209. When nodePartition is not set in Placement Constraints, containers are allocated only in default partition. Contributed by Tarun Parimi.
1944a7d is described below
commit 1944a7d84496a36cb691d0f0128958f82c12c02d
Author: Weiwei Yang <ww...@apache.org>
AuthorDate: Fri Jun 21 17:40:55 2019 +0800
YARN-9209. When nodePartition is not set in Placement Constraints, containers are allocated only in default partition. Contributed by Tarun Parimi.
(cherry picked from commit 83dcb9d87ec75f2be0acb8972f5f0faefe6ffbcd)
---
.../resourcemanager/scheduler/AppSchedulingInfo.java | 14 ++++++++++++++
.../placement/SingleConstraintAppPlacementAllocator.java | 5 ++++-
.../TestSingleConstraintAppPlacementAllocator.java | 7 ++++---
3 files changed, 22 insertions(+), 4 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/scheduler/AppSchedulingInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java
index ca7d9ce..a682ef7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java
@@ -791,4 +791,18 @@ public class AppSchedulingInfo {
public Map<String, String> getApplicationSchedulingEnvs() {
return applicationSchedulingEnvs;
}
+
+ /**
+ * Get the defaultNodeLabelExpression for the application's current queue.
+ *
+ * @return defaultNodeLabelExpression
+ */
+ public String getDefaultNodeLabelExpression() {
+ try {
+ this.readLock.lock();
+ return queue.getDefaultNodeLabelExpression();
+ } finally {
+ this.readLock.unlock();
+ }
+ }
}
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/placement/SingleConstraintAppPlacementAllocator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/placement/SingleConstraintAppPlacementAllocator.java
index 54e4666..09063a5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/placement/SingleConstraintAppPlacementAllocator.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/placement/SingleConstraintAppPlacementAllocator.java
@@ -253,7 +253,10 @@ public class SingleConstraintAppPlacementAllocator<N extends SchedulerNode>
// Currently only single constraint is handled.
private String validateAndGetTargetNodePartition(
PlacementConstraint placementConstraint) {
- String nodePartition = RMNodeLabelsManager.NO_LABEL;
+ String defaultNodeLabelExpression =
+ appSchedulingInfo.getDefaultNodeLabelExpression();
+ String nodePartition = defaultNodeLabelExpression == null ?
+ RMNodeLabelsManager.NO_LABEL : defaultNodeLabelExpression;
if (placementConstraint != null &&
placementConstraint.getConstraintExpr() != null) {
PlacementConstraint.AbstractConstraint ac =
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/placement/TestSingleConstraintAppPlacementAllocator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/placement/TestSingleConstraintAppPlacementAllocator.java
index a665b8d..59f9b4b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/placement/TestSingleConstraintAppPlacementAllocator.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/placement/TestSingleConstraintAppPlacementAllocator.java
@@ -67,7 +67,7 @@ public class TestSingleConstraintAppPlacementAllocator {
TestUtils.getMockApplicationId(1));
when(appSchedulingInfo.getApplicationAttemptId()).thenReturn(
TestUtils.getMockApplicationAttemptId(1, 1));
-
+ when(appSchedulingInfo.getDefaultNodeLabelExpression()).thenReturn("y");
// stub RMContext
rmContext = TestUtils.getMockRMContext();
@@ -153,7 +153,8 @@ public class TestSingleConstraintAppPlacementAllocator {
.resourceSizing(
ResourceSizing.newInstance(1, Resource.newInstance(1024, 1)))
.build());
- Assert.assertEquals("", allocator.getTargetNodePartition());
+ // Node partition is unspecified, use the default node label expression y
+ Assert.assertEquals("y", allocator.getTargetNodePartition());
// Valid (with application Id target)
assertValidSchedulingRequest(SchedulingRequest.newBuilder().executionType(
@@ -167,7 +168,7 @@ public class TestSingleConstraintAppPlacementAllocator {
ResourceSizing.newInstance(1, Resource.newInstance(1024, 1)))
.build());
// Allocation tags should not include application Id
- Assert.assertEquals("", allocator.getTargetNodePartition());
+ Assert.assertEquals("y", allocator.getTargetNodePartition());
// Invalid (without sizing)
assertInvalidSchedulingRequest(SchedulingRequest.newBuilder().executionType(
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org