hadoop git commit: YARN-6775. CapacityScheduler: Improvements to assignContainers, avoid unnecessary canAssignToUser/Queue calls. (Nathan Roberts via wangda)
Repository: hadoop Updated Branches: refs/heads/branch-2.8 6ed569df2 -> a39617df6 YARN-6775. CapacityScheduler: Improvements to assignContainers, avoid unnecessary canAssignToUser/Queue calls. (Nathan Roberts via wangda) Change-Id: I5951f0997547de7d2e4a30b4ad87ab0a59b3066a Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a39617df Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a39617df Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a39617df Branch: refs/heads/branch-2.8 Commit: a39617df63e758629123da50d0690f3c13657eca Parents: 6ed569d Author: Wangda TanAuthored: Wed Jul 19 15:29:45 2017 -0700 Committer: Wangda Tan Committed: Wed Jul 19 15:29:45 2017 -0700 -- .../scheduler/capacity/LeafQueue.java | 93 .../capacity/TestCapacityScheduler.java | 145 +++ .../scheduler/capacity/TestLeafQueue.java | 10 +- .../scheduler/capacity/TestReservations.java| 6 +- 4 files changed, 221 insertions(+), 33 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/a39617df/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.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/scheduler/capacity/LeafQueue.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/LeafQueue.java index 7258aee..bd3bdff 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/LeafQueue.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/LeafQueue.java @@ -956,25 +956,56 @@ public class LeafQueue extends AbstractCSQueue { return CSAssignment.NULL_ASSIGNMENT; } + Map userLimits = new HashMap<>(); + boolean needAssignToQueueCheck = true; for (Iterator assignmentIterator = orderingPolicy.getAssignmentIterator(); assignmentIterator .hasNext(); ) { FiCaSchedulerApp application = assignmentIterator.next(); // Check queue max-capacity limit -if (!super.canAssignToThisQueue(clusterResource, node.getPartition(), -currentResourceLimits, application.getCurrentReservation(), -schedulingMode)) { - return CSAssignment.NULL_ASSIGNMENT; +Resource appReserved = application.getCurrentReservation(); +if (needAssignToQueueCheck) { + if (!super.canAssignToThisQueue(clusterResource, node.getPartition(), + currentResourceLimits, appReserved, schedulingMode)) { +return CSAssignment.NULL_ASSIGNMENT; + } + // If there was no reservation and canAssignToThisQueue returned + // true, there is no reason to check further. + if (!this.reservationsContinueLooking + || appReserved.equals(Resources.none()) || !node.getPartition() + .equals(CommonNodeLabelsManager.NO_LABEL)) { +needAssignToQueueCheck = false; + } } +CachedUserLimit cul = userLimits.get(application.getUser()); +Resource cachedUserLimit = null; +if (cul != null) { + cachedUserLimit = cul.userLimit; +} Resource userLimit = computeUserLimitAndSetHeadroom(application, clusterResource, -node.getPartition(), schedulingMode); +node.getPartition(), schedulingMode, cachedUserLimit); +if (cul == null) { + cul = new CachedUserLimit(userLimit); + userLimits.put(application.getUser(), cul); +} // Check user limit -if (!canAssignToUser(clusterResource, application.getUser(), userLimit, -application, node.getPartition(), currentResourceLimits)) { +boolean userAssignable = true; +if (!cul.canAssign && Resources.fitsIn(appReserved, cul.reservation)) { + userAssignable = false; +} else { + userAssignable = + canAssignToUser(clusterResource, application.getUser(), userLimit, + appReserved, node.getPartition(), currentResourceLimits); + if (!userAssignable && Resources.fitsIn(cul.reservation,
[06/50] [abbrv] hadoop git commit: YARN-6775. CapacityScheduler: Improvements to assignContainers, avoid unnecessary canAssignToUser/Queue calls. (Nathan Roberts via wangda)
YARN-6775. CapacityScheduler: Improvements to assignContainers, avoid unnecessary canAssignToUser/Queue calls. (Nathan Roberts via wangda) Change-Id: I84ccd54200ccbaae23018ef320028e42b4c3509a Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/945c0958 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/945c0958 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/945c0958 Branch: refs/heads/HDFS-7240 Commit: 945c0958bb8df3dd9d5f1467f1216d2e6b0ee3d8 Parents: b61ab85 Author: Wangda TanAuthored: Thu Jul 13 10:30:15 2017 -0700 Committer: Wangda Tan Committed: Thu Jul 13 10:30:15 2017 -0700 -- .../scheduler/activities/ActivitiesLogger.java | 33 +++-- .../scheduler/capacity/LeafQueue.java | 83 --- .../capacity/TestCapacityScheduler.java | 146 ++- .../scheduler/capacity/TestLeafQueue.java | 10 +- 4 files changed, 231 insertions(+), 41 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/945c0958/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.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/scheduler/activities/ActivitiesLogger.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.java index 3f8ed55..12aff02 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.java @@ -63,9 +63,14 @@ public class ActivitiesLogger { SchedulerApplicationAttempt application, Priority priority, String diagnostic) { String type = "app"; - recordActivity(activitiesManager, node, application.getQueueName(), - application.getApplicationId().toString(), priority, - ActivityState.REJECTED, diagnostic, type); + if (activitiesManager == null) { +return; + } + if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { +recordActivity(activitiesManager, node, application.getQueueName(), +application.getApplicationId().toString(), priority, +ActivityState.REJECTED, diagnostic, type); + } finishSkippedAppAllocationRecording(activitiesManager, application.getApplicationId(), ActivityState.REJECTED, diagnostic); } @@ -203,8 +208,13 @@ public class ActivitiesLogger { public static void recordQueueActivity(ActivitiesManager activitiesManager, SchedulerNode node, String parentQueueName, String queueName, ActivityState state, String diagnostic) { - recordActivity(activitiesManager, node, parentQueueName, queueName, null, - state, diagnostic, null); + if (activitiesManager == null) { +return; + } + if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { +recordActivity(activitiesManager, node, parentQueueName, queueName, +null, state, diagnostic, null); + } } } @@ -266,13 +276,10 @@ public class ActivitiesLogger { private static void recordActivity(ActivitiesManager activitiesManager, SchedulerNode node, String parentName, String childName, Priority priority, ActivityState state, String diagnostic, String type) { -if (activitiesManager == null) { - return; -} -if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { - activitiesManager.addSchedulingActivityForNode(node.getNodeID(), - parentName, childName, priority != null ? priority.toString() : null, - state, diagnostic, type); -} + +activitiesManager.addSchedulingActivityForNode(node.getNodeID(), parentName, +childName, priority != null ? priority.toString() : null, state, +diagnostic, type); + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/945c0958/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java -- diff --git
hadoop git commit: YARN-6775. CapacityScheduler: Improvements to assignContainers, avoid unnecessary canAssignToUser/Queue calls. (Nathan Roberts via wangda)
Repository: hadoop Updated Branches: refs/heads/branch-2 1d629c95a -> 5070c9ba3 YARN-6775. CapacityScheduler: Improvements to assignContainers, avoid unnecessary canAssignToUser/Queue calls. (Nathan Roberts via wangda) Change-Id: Iaf9bb7e5ed3aa1300abdccf87ae6fcbddbd25e3e Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5070c9ba Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5070c9ba Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5070c9ba Branch: refs/heads/branch-2 Commit: 5070c9ba39d1f9c6b46ce9df299584ea3ed5f506 Parents: 1d629c9 Author: Wangda TanAuthored: Wed Jul 19 15:25:21 2017 -0700 Committer: Wangda Tan Committed: Wed Jul 19 15:25:21 2017 -0700 -- .../scheduler/activities/ActivitiesLogger.java | 33 +++-- .../scheduler/capacity/LeafQueue.java | 83 --- .../capacity/TestCapacityScheduler.java | 145 +++ .../scheduler/capacity/TestLeafQueue.java | 10 +- 4 files changed, 231 insertions(+), 40 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/5070c9ba/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.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/scheduler/activities/ActivitiesLogger.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.java index 3f8ed55..12aff02 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.java @@ -63,9 +63,14 @@ public class ActivitiesLogger { SchedulerApplicationAttempt application, Priority priority, String diagnostic) { String type = "app"; - recordActivity(activitiesManager, node, application.getQueueName(), - application.getApplicationId().toString(), priority, - ActivityState.REJECTED, diagnostic, type); + if (activitiesManager == null) { +return; + } + if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { +recordActivity(activitiesManager, node, application.getQueueName(), +application.getApplicationId().toString(), priority, +ActivityState.REJECTED, diagnostic, type); + } finishSkippedAppAllocationRecording(activitiesManager, application.getApplicationId(), ActivityState.REJECTED, diagnostic); } @@ -203,8 +208,13 @@ public class ActivitiesLogger { public static void recordQueueActivity(ActivitiesManager activitiesManager, SchedulerNode node, String parentQueueName, String queueName, ActivityState state, String diagnostic) { - recordActivity(activitiesManager, node, parentQueueName, queueName, null, - state, diagnostic, null); + if (activitiesManager == null) { +return; + } + if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { +recordActivity(activitiesManager, node, parentQueueName, queueName, +null, state, diagnostic, null); + } } } @@ -266,13 +276,10 @@ public class ActivitiesLogger { private static void recordActivity(ActivitiesManager activitiesManager, SchedulerNode node, String parentName, String childName, Priority priority, ActivityState state, String diagnostic, String type) { -if (activitiesManager == null) { - return; -} -if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { - activitiesManager.addSchedulingActivityForNode(node.getNodeID(), - parentName, childName, priority != null ? priority.toString() : null, - state, diagnostic, type); -} + +activitiesManager.addSchedulingActivityForNode(node.getNodeID(), parentName, +childName, priority != null ? priority.toString() : null, state, +diagnostic, type); + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/5070c9ba/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java
hadoop git commit: YARN-6775. CapacityScheduler: Improvements to assignContainers, avoid unnecessary canAssignToUser/Queue calls. (Nathan Roberts via wangda)
Repository: hadoop Updated Branches: refs/heads/trunk b61ab8573 -> 945c0958b YARN-6775. CapacityScheduler: Improvements to assignContainers, avoid unnecessary canAssignToUser/Queue calls. (Nathan Roberts via wangda) Change-Id: I84ccd54200ccbaae23018ef320028e42b4c3509a Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/945c0958 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/945c0958 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/945c0958 Branch: refs/heads/trunk Commit: 945c0958bb8df3dd9d5f1467f1216d2e6b0ee3d8 Parents: b61ab85 Author: Wangda TanAuthored: Thu Jul 13 10:30:15 2017 -0700 Committer: Wangda Tan Committed: Thu Jul 13 10:30:15 2017 -0700 -- .../scheduler/activities/ActivitiesLogger.java | 33 +++-- .../scheduler/capacity/LeafQueue.java | 83 --- .../capacity/TestCapacityScheduler.java | 146 ++- .../scheduler/capacity/TestLeafQueue.java | 10 +- 4 files changed, 231 insertions(+), 41 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/945c0958/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.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/scheduler/activities/ActivitiesLogger.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.java index 3f8ed55..12aff02 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/activities/ActivitiesLogger.java @@ -63,9 +63,14 @@ public class ActivitiesLogger { SchedulerApplicationAttempt application, Priority priority, String diagnostic) { String type = "app"; - recordActivity(activitiesManager, node, application.getQueueName(), - application.getApplicationId().toString(), priority, - ActivityState.REJECTED, diagnostic, type); + if (activitiesManager == null) { +return; + } + if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { +recordActivity(activitiesManager, node, application.getQueueName(), +application.getApplicationId().toString(), priority, +ActivityState.REJECTED, diagnostic, type); + } finishSkippedAppAllocationRecording(activitiesManager, application.getApplicationId(), ActivityState.REJECTED, diagnostic); } @@ -203,8 +208,13 @@ public class ActivitiesLogger { public static void recordQueueActivity(ActivitiesManager activitiesManager, SchedulerNode node, String parentQueueName, String queueName, ActivityState state, String diagnostic) { - recordActivity(activitiesManager, node, parentQueueName, queueName, null, - state, diagnostic, null); + if (activitiesManager == null) { +return; + } + if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { +recordActivity(activitiesManager, node, parentQueueName, queueName, +null, state, diagnostic, null); + } } } @@ -266,13 +276,10 @@ public class ActivitiesLogger { private static void recordActivity(ActivitiesManager activitiesManager, SchedulerNode node, String parentName, String childName, Priority priority, ActivityState state, String diagnostic, String type) { -if (activitiesManager == null) { - return; -} -if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { - activitiesManager.addSchedulingActivityForNode(node.getNodeID(), - parentName, childName, priority != null ? priority.toString() : null, - state, diagnostic, type); -} + +activitiesManager.addSchedulingActivityForNode(node.getNodeID(), parentName, +childName, priority != null ? priority.toString() : null, state, +diagnostic, type); + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/945c0958/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java