You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by ac...@apache.org on 2011/05/16 20:34:47 UTC
svn commit: r1103824 - in /hadoop/mapreduce/branches/MR-279: CHANGES.txt
yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java
Author: acmurthy
Date: Mon May 16 18:34:47 2011
New Revision: 1103824
URL: http://svn.apache.org/viewvc?rev=1103824&view=rev
Log:
Fix CapacityScheduler (LeafQueue) to not allocate DATA_LOCAL containers when they are not required on the rack.
Modified:
hadoop/mapreduce/branches/MR-279/CHANGES.txt
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java
Modified: hadoop/mapreduce/branches/MR-279/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/CHANGES.txt?rev=1103824&r1=1103823&r2=1103824&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/CHANGES.txt (original)
+++ hadoop/mapreduce/branches/MR-279/CHANGES.txt Mon May 16 18:34:47 2011
@@ -4,6 +4,9 @@ Trunk (unreleased changes)
MAPREDUCE-279
+ Fix CapacityScheduler (LeafQueue) to not allocate DATA_LOCAL containers
+ when they are not required on the rack. (acmurthy)
+
Fix CapacityScheduler to release unused reservations on application
completion. (acmurthy)
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java?rev=1103824&r1=1103823&r2=1103824&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java Mon May 16 18:34:47 2011
@@ -794,18 +794,26 @@ public class LeafQueue implements Queue
// (requiredContainers * localityWaitFactor) < missedNodes));
}
+ // Check if we need containers on this rack
+ ResourceRequest rackLocalRequest =
+ application.getResourceRequest(priority, node.getRackName());
if (type == NodeType.RACK_LOCAL) {
- ResourceRequest rackLocalRequest =
- application.getResourceRequest(priority, node.getRackName());
if (rackLocalRequest == null) {
// No point waiting for rack-locality if we don't need this rack
return offSwitchRequest.getNumContainers() > 0;
} else {
- return rackLocalRequest.getNumContainers() > 0;
+ return rackLocalRequest.getNumContainers() > 0;
}
}
+ // Check if we need containers on this host
if (type == NodeType.DATA_LOCAL) {
+ // First: Do we need containers on this rack?
+ if (rackLocalRequest != null && rackLocalRequest.getNumContainers() == 0) {
+ return false;
+ }
+
+ // Now check if we need containers on this host...
ResourceRequest nodeLocalRequest =
application.getResourceRequest(priority, node.getNodeAddress());
if (nodeLocalRequest != null) {