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 om...@apache.org on 2011/03/08 07:00:53 UTC

svn commit: r1079255 - in /hadoop/mapreduce/branches/yahoo-merge/src: java/org/apache/hadoop/mapred/JobInProgress.java test/mapred/org/apache/hadoop/mapred/TestWebUIAuthorization.java

Author: omalley
Date: Tue Mar  8 06:00:53 2011
New Revision: 1079255

URL: http://svn.apache.org/viewvc?rev=1079255&view=rev
Log:
commit 6c69dabd04c260f528b0860ca6b9856a1da30356
Author: Greg Roelofs <ro...@yahoo-inc.com>
Date:   Tue Jan 25 17:18:36 2011 -0800

    Fixes addressing Dick's review comments.  Skipped (optional) TestMiniMRWithDFS/
    TestServiceLevelAuthorization enum fix for now--dislike tying two unit tests
    together more tightly, even though they're already tied.
    
    This appears to complete the main y-trunk uberization/MR-1220 changes.  (There
    are still a dozen or so "FUTURE UBER TODO" items on the list, however.)

Modified:
    hadoop/mapreduce/branches/yahoo-merge/src/java/org/apache/hadoop/mapred/JobInProgress.java
    hadoop/mapreduce/branches/yahoo-merge/src/test/mapred/org/apache/hadoop/mapred/TestWebUIAuthorization.java

Modified: hadoop/mapreduce/branches/yahoo-merge/src/java/org/apache/hadoop/mapred/JobInProgress.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/yahoo-merge/src/java/org/apache/hadoop/mapred/JobInProgress.java?rev=1079255&r1=1079254&r2=1079255&view=diff
==============================================================================
--- hadoop/mapreduce/branches/yahoo-merge/src/java/org/apache/hadoop/mapred/JobInProgress.java (original)
+++ hadoop/mapreduce/branches/yahoo-merge/src/java/org/apache/hadoop/mapred/JobInProgress.java Tue Mar  8 06:00:53 2011
@@ -68,6 +68,8 @@ import org.apache.hadoop.mapreduce.jobhi
 import org.apache.hadoop.mapreduce.jobhistory.TaskFailedEvent;
 import org.apache.hadoop.mapreduce.jobhistory.TaskFinishedEvent;
 import org.apache.hadoop.mapreduce.jobhistory.TaskStartedEvent;
+import org.apache.hadoop.mapreduce.lib.chain.ChainMapper;
+import org.apache.hadoop.mapreduce.lib.chain.ChainReducer;
 import org.apache.hadoop.mapreduce.security.TokenCache;
 import org.apache.hadoop.security.Credentials;
 import org.apache.hadoop.mapreduce.security.token.DelegationTokenRenewal;
@@ -691,12 +693,7 @@ public class JobInProgress {
         // ignoring overhead due to UberTask and statics as negligible here:
         && (Math.max(memoryPerMap, memoryPerReduce) <= sysMemSizeForUberSlot
             || sysMemSizeForUberSlot == JobConf.DISABLED_MEMORY_LIMIT)
-        && (conf.get(MRJobConfig.MAP_CLASS_ATTR) == null ||
-            conf.get(MRJobConfig.MAP_CLASS_ATTR).lastIndexOf("ChainMapper")
-            == -1)
-        && (conf.get(MRJobConfig.REDUCE_CLASS_ATTR) == null ||
-            conf.get(MRJobConfig.REDUCE_CLASS_ATTR).lastIndexOf("ChainReducer")
-            == -1);
+        && !isChainJob();
 
     if (isUber()) {
       // save internal details for UI and abort-cleanup
@@ -780,6 +777,34 @@ public class JobInProgress {
     }
   }
 
+  boolean isChainJob() {
+    boolean isChainJob = false;
+
+    try {
+      String mapClassName = conf.get(MRJobConfig.MAP_CLASS_ATTR);
+      if (mapClassName != null) {
+        Class<?> mapClass = Class.forName(mapClassName);
+        if (ChainMapper.class.isAssignableFrom(mapClass))
+          isChainJob = true;
+      }
+    } catch (ClassNotFoundException cnfe) {
+      // don't care; assume it's not derived from ChainMapper
+    }
+
+    try {
+      String reduceClassName = conf.get(MRJobConfig.REDUCE_CLASS_ATTR);
+      if (reduceClassName != null) {
+        Class<?> reduceClass = Class.forName(reduceClassName);
+        if (ChainReducer.class.isAssignableFrom(reduceClass))
+          isChainJob = true;
+      }
+    } catch (ClassNotFoundException cnfe) {
+      // don't care; assume it's not derived from ChainReducer
+    }
+
+    return isChainJob;
+  }
+
   // Returns true if the job is empty (0 maps, 0 reduces and no setup-cleanup)
   // else return false.
   synchronized boolean isJobEmpty() {

Modified: hadoop/mapreduce/branches/yahoo-merge/src/test/mapred/org/apache/hadoop/mapred/TestWebUIAuthorization.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/yahoo-merge/src/test/mapred/org/apache/hadoop/mapred/TestWebUIAuthorization.java?rev=1079255&r1=1079254&r2=1079255&view=diff
==============================================================================
--- hadoop/mapreduce/branches/yahoo-merge/src/test/mapred/org/apache/hadoop/mapred/TestWebUIAuthorization.java (original)
+++ hadoop/mapreduce/branches/yahoo-merge/src/test/mapred/org/apache/hadoop/mapred/TestWebUIAuthorization.java Tue Mar  8 06:00:53 2011
@@ -211,19 +211,16 @@ public class TestWebUIAuthorization exte
         cluster.getJobTrackerRunner().getJobTracker().getJob(jobId);
     TaskReport[] taskReports = null;
 
-    TaskID tipId = null;
-    do { // make sure that the map task is running
+    do { // make sure that the map task (or ubertask) is running
       Thread.sleep(200);
       taskReports = jip.isUber()
           ? client.getReduceTaskReports(jobId)
           : client.getMapTaskReports(jobId);
     } while (taskReports.length == 0);
 
-    for (TaskReport r : taskReports) {
-      tipId = r.getTaskID();
-      break;// because we have only one map (or one reduce if uberized)
-    }
-    return tipId;
+    assertEquals("unexpected number of task reports", 1, taskReports.length);
+
+    return taskReports[0].getTaskID();
   }
 
   /**