Author: ddas
Date: Thu Jan  3 00:15:30 2008
New Revision: 608373

URL: http://svn.apache.org/viewvc?rev=608373&view=rev
Log:
HADOOP-2208. Counter update frequency (from TaskTracker to JobTracker) is 
capped at 1 minute. Contributed by Amareshwari Sri Ramadasu.

Modified:
    lucene/hadoop/trunk/CHANGES.txt
    
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java
    lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/MRConstants.java
    lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java
    lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java
    
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskUmbilicalProtocol.java

Modified: lucene/hadoop/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?rev=608373&r1=608372&r2=608373&view=diff
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Thu Jan  3 00:15:30 2008
@@ -152,6 +152,9 @@
     HADOOP-1900. Makes the heartbeat and task event queries interval 
     dependent on the cluster size.  (Amareshwari Sri Ramadasu via ddas)
 
+    HADOOP-2208. Counter update frequency (from TaskTracker to JobTracker) is 
+    capped at 1 minute.  (Amareshwari Sri Ramadasu via ddas)
+
   BUG FIXES
 
     HADOOP-2100.  Remove faulty check for existence of $HADOOP_PID_DIR and let

Modified: 
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java
URL: 
http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java?rev=608373&r1=608372&r2=608373&view=diff
==============================================================================
--- 
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java 
(original)
+++ 
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/InterTrackerProtocol.java 
Thu Jan  3 00:15:30 2008
@@ -39,8 +39,9 @@
    * TaskTrackerStatus for HADOOP-1274
    * Version 8: HeartbeatResponse is added with the next heartbeat interval.
    * version 9 changes the counter representation for HADOOP-2248
+   * version 10 changes the TaskStatus representation for HADOOP-2208
    */
-  public static final long versionID = 9L;
+  public static final long versionID = 10L;
   
   public final static int TRACKERS_OK = 0;
   public final static int UNKNOWN_TASKTRACKER = 1;

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/MRConstants.java
URL: 
http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/MRConstants.java?rev=608373&r1=608372&r2=608373&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/MRConstants.java 
(original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/MRConstants.java Thu 
Jan  3 00:15:30 2008
@@ -29,6 +29,8 @@
   
   public static final int CLUSTER_INCREMENT = 50;
 
+  public static final long COUNTER_UPDATE_INTERVAL = 60 * 1000;
+
   //for the inmemory filesystem (to do in-memory merge)
   /**
    * Constant denoting when a merge of in memory files will be triggered 

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java
URL: 
http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java?rev=608373&r1=608372&r2=608373&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java 
(original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskStatus.java Thu 
Jan  3 00:15:30 2008
@@ -55,6 +55,7 @@
     
   private Phase phase = Phase.STARTING; 
   private Counters counters;
+  private boolean includeCounters;
 
   public TaskStatus() {}
 
@@ -70,6 +71,7 @@
     this.taskTracker = taskTracker;
     this.phase = phase;
     this.counters = counters;
+    this.includeCounters = true;
   }
   
   public String getTaskId() { return taskid; }
@@ -181,6 +183,15 @@
     }
     this.phase = phase; 
   }
+  
+  public boolean getIncludeCounters() {
+    return includeCounters; 
+  }
+  
+  public void setIncludeCounters(boolean send) {
+    includeCounters = send;
+  }
+  
   /**
    * Get task's counters.
    */
@@ -281,7 +292,10 @@
     WritableUtils.writeEnum(out, phase);
     out.writeLong(startTime);
     out.writeLong(finishTime);
-    counters.write(out);
+    out.writeBoolean(includeCounters);
+    if (includeCounters) {
+      counters.write(out);
+    }
   }
 
   public void readFields(DataInput in) throws IOException {
@@ -294,7 +308,10 @@
     this.startTime = in.readLong(); 
     this.finishTime = in.readLong(); 
     counters = new Counters();
-    counters.readFields(in);
+    this.includeCounters = in.readBoolean();
+    if (includeCounters) {
+      counters.readFields(in);
+    }
   }
   
   
//////////////////////////////////////////////////////////////////////////////

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java
URL: 
http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java?rev=608373&r1=608372&r2=608373&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java 
(original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskTracker.java Thu 
Jan  3 00:15:30 2008
@@ -958,12 +958,25 @@
     return State.NORMAL;
   }
 
+  private long previousUpdate = 0;
+
   /**
    * Build and transmit the heart beat to the JobTracker
    * @return false if the tracker was unknown
    * @throws IOException
    */
   private HeartbeatResponse transmitHeartBeat() throws IOException {
+    // Send Counters in the status once every COUNTER_UPDATE_INTERVAL
+    long now = System.currentTimeMillis();
+    boolean sendCounters;
+    if (now > (previousUpdate + COUNTER_UPDATE_INTERVAL)) {
+      sendCounters = true;
+      previousUpdate = now;
+    }
+    else {
+      sendCounters = false;
+    }
+
     // 
     // Check if the last heartbeat got through... 
     // if so then build the heartbeat information for the JobTracker;
@@ -972,7 +985,9 @@
     if (status == null) {
       synchronized (this) {
         status = new TaskTrackerStatus(taskTrackerName, localHostname, 
-                                       httpPort, 
cloneAndResetRunningTaskStatuses(), 
+                                       httpPort, 
+                                       cloneAndResetRunningTaskStatuses(
+                                         sendCounters), 
                                        failures, 
                                        maxCurrentMapTasks,
                                        maxCurrentReduceTasks); 
@@ -2060,10 +2075,16 @@
     return taskTrackerName;
   }
     
-  private synchronized List<TaskStatus> cloneAndResetRunningTaskStatuses() {
+  private synchronized List<TaskStatus> cloneAndResetRunningTaskStatuses(
+                                          boolean sendCounters) {
     List<TaskStatus> result = new ArrayList<TaskStatus>(runningTasks.size());
     for(TaskInProgress tip: runningTasks.values()) {
       TaskStatus status = tip.getStatus();
+      status.setIncludeCounters(sendCounters);
+      // send counters for finished or failed tasks.
+      if (status.getRunState() != TaskStatus.State.RUNNING) {
+        status.setIncludeCounters(true);
+      }
       result.add((TaskStatus)status.clone());
       status.clearStatus();
     }

Modified: 
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskUmbilicalProtocol.java
URL: 
http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskUmbilicalProtocol.java?rev=608373&r1=608372&r2=608373&view=diff
==============================================================================
--- 
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskUmbilicalProtocol.java
 (original)
+++ 
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskUmbilicalProtocol.java
 Thu Jan  3 00:15:30 2008
@@ -37,8 +37,9 @@
    *         org.apache.hadoop.mapred.TaskStatus.Phase, Counters) 
    *         with [EMAIL PROTECTED] #statusUpdate(String, TaskStatus)}
    * Version 5 changed counters representation for HADOOP-2248
+   * Version 6 changes the TaskStatus representation for HADOOP-2208
    * */
-  public static final long versionID = 5L;
+  public static final long versionID = 6L;
   
   /** Called when a child task process starts, to get its task.*/
   Task getTask(String taskid) throws IOException;


Reply via email to