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 dd...@apache.org on 2009/03/25 10:00:57 UTC

svn commit: r758180 - in /hadoop/core/trunk: CHANGES.txt src/mapred/org/apache/hadoop/mapred/Merger.java

Author: ddas
Date: Wed Mar 25 09:00:52 2009
New Revision: 758180

URL: http://svn.apache.org/viewvc?rev=758180&view=rev
Log:
HADOOP-5210. Solves a problem in the progress report of the reduce task. Contributed by Ravi Gummadi.

Modified:
    hadoop/core/trunk/CHANGES.txt
    hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/Merger.java

Modified: hadoop/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=758180&r1=758179&r2=758180&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Wed Mar 25 09:00:52 2009
@@ -310,6 +310,9 @@
 
     HADOOP-5507. Fix JMXGet javadoc warnings.  (Boris Shkolnik via szetszwo)
 
+    HADOOP-5210. Solves a problem in the progress report of the reduce task.
+    (Ravi Gummadi via ddas)
+
 Release 0.20.0 - Unreleased
 
   INCOMPATIBLE CHANGES

Modified: hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/Merger.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/Merger.java?rev=758180&r1=758179&r2=758180&view=diff
==============================================================================
--- hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/Merger.java (original)
+++ hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/Merger.java Wed Mar 25 09:00:52 2009
@@ -363,6 +363,7 @@
           new ArrayList<Segment<K, V>>();
         int segmentsConsidered = 0;
         int numSegmentsToConsider = factor;
+        long startBytes = 0; // starting bytes of segments of this merge
         while (true) {
           //extract the smallest 'factor' number of segments  
           //Call cleanup on the empty segments (no key/value data)
@@ -375,8 +376,8 @@
             long startPos = segment.getPosition();
             boolean hasNext = segment.next();
             long endPos = segment.getPosition();
-            totalBytesProcessed += endPos - startPos;
-            mergeProgress.set(totalBytesProcessed * progPerByte);
+            startBytes += endPos - startPos;
+            
             if (hasNext) {
               segmentsToMerge.add(segment);
               segmentsConsidered++;
@@ -406,6 +407,12 @@
         //if we have lesser number of segments remaining, then just return the
         //iterator, else do another single level merge
         if (numSegments <= factor) {
+          // Reset totalBytesProcessed to track the progress of the final merge.
+          // This is considered the progress of the reducePhase, the 3rd phase
+          // of reduce task. Currently totalBytesProcessed is not used in sort
+          // phase of reduce task(i.e. when intermediate merges happen).
+          totalBytesProcessed = startBytes;
+          
           //calculate the length of the remaining segments. Required for 
           //calculating the merge progress
           long totalBytes = 0;