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) {