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 zj...@apache.org on 2015/06/03 01:48:08 UTC
[36/50] [abbrv] hadoop git commit: YARN-3547. FairScheduler: Apps
that have no resource demand should not participate scheduling. (Xianyin Xin
via kasha)
YARN-3547. FairScheduler: Apps that have no resource demand should not participate scheduling. (Xianyin Xin via kasha)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6b126e9b
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6b126e9b
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6b126e9b
Branch: refs/heads/YARN-2928
Commit: 6b126e9bba94c4a8180168e2803d754b8eb81a59
Parents: 547b9dd
Author: Karthik Kambatla <ka...@apache.org>
Authored: Fri May 29 15:17:02 2015 -0700
Committer: Zhijie Shen <zj...@apache.org>
Committed: Tue Jun 2 16:12:58 2015 -0700
----------------------------------------------------------------------
hadoop-yarn-project/CHANGES.txt | 3 ++
.../scheduler/fair/FSLeafQueue.java | 43 ++++++++++----------
2 files changed, 24 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6b126e9b/hadoop-yarn-project/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index 2fe1b02..4ddf11b 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -379,6 +379,9 @@ Release 2.8.0 - UNRELEASED
YARN-3006. Improve the error message when attempting manual failover with
auto-failover enabled. (Akira AJISAKA via wangda)
+ YARN-3547. FairScheduler: Apps that have no resource demand should not participate
+ scheduling. (Xianyin Xin via kasha)
+
BUG FIXES
YARN-3197. Confusing log generated by CapacityScheduler. (Varun Saxena
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6b126e9b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.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/fair/FSLeafQueue.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java
index 04dbd2f..6779a1b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.TreeSet;
import com.google.common.annotations.VisibleForTesting;
import org.apache.commons.logging.Log;
@@ -314,35 +315,33 @@ public class FSLeafQueue extends FSQueue {
return assigned;
}
- Comparator<Schedulable> comparator = policy.getComparator();
- writeLock.lock();
- try {
- Collections.sort(runnableApps, comparator);
- } finally {
- writeLock.unlock();
- }
- // Release write lock here for better performance and avoiding deadlocks.
- // runnableApps can be in unsorted state because of this section,
- // but we can accept it in practice since the probability is low.
+ // Apps that have resource demands.
+ TreeSet<FSAppAttempt> pendingForResourceApps =
+ new TreeSet<FSAppAttempt>(policy.getComparator());
readLock.lock();
try {
- for (FSAppAttempt sched : runnableApps) {
- if (SchedulerAppUtils.isBlacklisted(sched, node, LOG)) {
- continue;
- }
-
- assigned = sched.assignContainer(node);
- if (!assigned.equals(Resources.none())) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Assigned container in queue:" + getName() + " " +
- "container:" + assigned);
- }
- break;
+ for (FSAppAttempt app : runnableApps) {
+ Resource pending = app.getAppAttemptResourceUsage().getPending();
+ if (!pending.equals(Resources.none())) {
+ pendingForResourceApps.add(app);
}
}
} finally {
readLock.unlock();
}
+ for (FSAppAttempt sched : pendingForResourceApps) {
+ if (SchedulerAppUtils.isBlacklisted(sched, node, LOG)) {
+ continue;
+ }
+ assigned = sched.assignContainer(node);
+ if (!assigned.equals(Resources.none())) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Assigned container in queue:" + getName() + " " +
+ "container:" + assigned);
+ }
+ break;
+ }
+ }
return assigned;
}