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 cu...@apache.org on 2006/02/16 21:27:52 UTC

svn commit: r378355 - in /lucene/hadoop/trunk/src: java/org/apache/hadoop/mapred/ webapps/mapred/

Author: cutting
Date: Thu Feb 16 12:27:48 2006
New Revision: 378355

URL: http://svn.apache.org/viewcvs?rev=378355&view=rev
Log:
Fix so that task state is displayed even when there are no errors.  Also changed report to be a datastructure rather than a vector of strings.

Added:
    lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskReport.java
Modified:
    lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobSubmissionProtocol.java
    lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobTracker.java
    lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/LocalJobRunner.java
    lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java
    lucene/hadoop/trunk/src/webapps/mapred/jobdetails.jsp

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobSubmissionProtocol.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobSubmissionProtocol.java?rev=378355&r1=378354&r2=378355&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobSubmissionProtocol.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobSubmissionProtocol.java Thu Feb 16 12:27:48 2006
@@ -55,8 +55,8 @@
     /**
      * Grab a bunch of info on the tasks that make up the job
      */
-    public Vector[] getMapTaskReport(String jobid);
-    public Vector[] getReduceTaskReport(String jobid);
+    public TaskReport[] getMapTaskReports(String jobid);
+    public TaskReport[] getReduceTaskReports(String jobid);
 
     /**
      * A MapReduce system always operates on a single filesystem.  This 

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobTracker.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobTracker.java?rev=378355&r1=378354&r2=378355&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobTracker.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobTracker.java Thu Feb 16 12:27:48 2006
@@ -679,10 +679,10 @@
             return null;
         }
     }
-    public synchronized Vector[] getMapTaskReport(String jobid) {
+    public synchronized TaskReport[] getMapTaskReports(String jobid) {
         JobInProgress job = (JobInProgress) jobs.get(jobid);
         if (job == null) {
-            return new Vector[0];
+            return new TaskReport[0];
         } else {
             Vector reports = new Vector();
             Vector completeMapTasks = job.reportTasksInProgress(true, true);
@@ -695,14 +695,14 @@
                 TaskInProgress tip = (TaskInProgress) it.next();
                 reports.add(tip.generateSingleReport());
             }
-            return (Vector[]) reports.toArray(new Vector[reports.size()]);
+            return (TaskReport[]) reports.toArray(new TaskReport[reports.size()]);
         }
     }
 
-    public synchronized Vector[] getReduceTaskReport(String jobid) {
+    public synchronized TaskReport[] getReduceTaskReports(String jobid) {
         JobInProgress job = (JobInProgress) jobs.get(jobid);
         if (job == null) {
-            return new Vector[0];
+            return new TaskReport[0];
         } else {
             Vector reports = new Vector();
             Vector completeReduceTasks = job.reportTasksInProgress(false, true);
@@ -715,7 +715,7 @@
                 TaskInProgress tip = (TaskInProgress) it.next();
                 reports.add(tip.generateSingleReport());
             }
-            return (Vector[]) reports.toArray(new Vector[reports.size()]);
+            return (TaskReport[]) reports.toArray(new TaskReport[reports.size()]);
         }
     }
 

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/LocalJobRunner.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/LocalJobRunner.java?rev=378355&r1=378354&r2=378355&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/LocalJobRunner.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/LocalJobRunner.java Thu Feb 16 12:27:48 2006
@@ -175,11 +175,11 @@
     return new JobProfile(id, job.file, "http://localhost:8080/");
   }
 
-  public Vector[] getMapTaskReport(String id) {
-    return new Vector[0];
+  public TaskReport[] getMapTaskReports(String id) {
+    return new TaskReport[0];
   }
-  public Vector[] getReduceTaskReport(String id) {
-    return new Vector[0];
+  public TaskReport[] getReduceTaskReports(String id) {
+    return new TaskReport[0];
   }
 
   public JobStatus getJobStatus(String id) {

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java?rev=378355&r1=378354&r2=378355&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskInProgress.java Thu Feb 16 12:27:48 2006
@@ -60,6 +60,7 @@
     // Status of the TIP
     int numTaskFailures = 0;
     double progress = 0;
+    String state = "";
     long startTime = 0;
     int completes = 0;
     boolean failed = false;
@@ -215,23 +216,14 @@
      * task ID and overall status, plus reports for all the
      * component task-threads that have ever been started.
      */
-    Vector generateSingleReport() {
-        Vector report = new Vector();
-        report.add(getTIPId());
-        report.add("" + progress);
-
-        report.add(new Integer(taskDiagnosticData.size()));
-        for (Iterator it = taskDiagnosticData.keySet().iterator(); it.hasNext(); ) {
-            String taskid = (String) it.next();
-            Vector taskData = (Vector) taskDiagnosticData.get(taskid);
-
-            TaskStatus taskStatus = (TaskStatus) taskStatuses.get(taskid);
-            String taskStateString = taskStatus.getStateString();
-
-            report.add(taskData);
-            report.add(taskStateString);
-        }
-        return report;
+    TaskReport generateSingleReport() {
+      ArrayList diagnostics = new ArrayList();
+      for (Iterator i = taskDiagnosticData.values().iterator(); i.hasNext();) {
+        diagnostics.addAll((Vector)i.next());
+      }
+      return new TaskReport
+        (getTIPId(), (float)progress, state,
+         (String[])diagnostics.toArray(new String[diagnostics.size()]));
     }
 
     ////////////////////////////////////////////////
@@ -333,17 +325,23 @@
             this.progress = 0;
         } else {
             double bestProgress = 0;
+            String bestState = "";
             for (Iterator it = taskStatuses.keySet().iterator(); it.hasNext(); ) {
                 String taskid = (String) it.next();
                 TaskStatus status = (TaskStatus) taskStatuses.get(taskid);
                 if (status.getRunState() == TaskStatus.SUCCEEDED) {
                     bestProgress = 1;
+                    bestState = status.getStateString();
                     break;
                 } else if (status.getRunState() == TaskStatus.RUNNING) {
-                    bestProgress = Math.max(bestProgress, status.getProgress());
+                  if (status.getProgress() >= bestProgress) {
+                    bestProgress = status.getProgress();
+                    bestState = status.getStateString();
+                  }
                 }
             }
             this.progress = bestProgress;
+            this.state = bestState;
         }
     }
 

Added: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskReport.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskReport.java?rev=378355&view=auto
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskReport.java (added)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TaskReport.java Thu Feb 16 12:27:48 2006
@@ -0,0 +1,67 @@
+/**
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.mapred;
+
+import org.apache.hadoop.io.*;
+
+import java.io.*;
+
+/** A report on the state of a task. */
+public class TaskReport implements Writable {
+  private String taskid;
+  private float progress;
+  private String state;
+  private String[] diagnostics;
+
+  public TaskReport() {}
+
+  TaskReport(String taskid, float progress, String state,
+             String[] diagnostics) {
+    this.taskid = taskid;
+    this.progress = progress;
+    this.state = state;
+    this.diagnostics = diagnostics;
+  }
+    
+  /** The id of the task. */
+  public String getTaskId() { return taskid; }
+  /** The amount completed, between zero and one. */
+  public float getProgress() { return progress; }
+  /** The most recent state, reported by a {@link Reporter}. */
+  public String getState() { return state; }
+  /** A list of error messages. */
+  public String[] getDiagnostics() { return diagnostics; }
+
+  //////////////////////////////////////////////
+  // Writable
+  //////////////////////////////////////////////
+  public void write(DataOutput out) throws IOException {
+    UTF8.writeString(out, taskid);
+    out.writeFloat(progress);
+    UTF8.writeString(out, state);
+    new ObjectWritable(diagnostics).write(out);
+  }
+
+  public void readFields(DataInput in) throws IOException {
+    this.taskid = UTF8.readString(in);
+    this.progress = in.readFloat();
+    this.state = UTF8.readString(in);
+
+    ObjectWritable wrapper = new ObjectWritable();
+    wrapper.readFields(in);
+    diagnostics = (String[])wrapper.get();
+  }
+}

Modified: lucene/hadoop/trunk/src/webapps/mapred/jobdetails.jsp
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/webapps/mapred/jobdetails.jsp?rev=378355&r1=378354&r2=378355&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/webapps/mapred/jobdetails.jsp (original)
+++ lucene/hadoop/trunk/src/webapps/mapred/jobdetails.jsp Thu Feb 16 12:27:48 2006
@@ -13,8 +13,8 @@
   JobProfile profile = (job != null) ? (job.getProfile()) : null;
   JobStatus status = (job != null) ? (job.getStatus()) : null;
 
-  Vector mapTaskReports[] = (job != null) ? tracker.getMapTaskReport(jobid) : null;
-  Vector reduceTaskReports[] = (job != null) ? tracker.getReduceTaskReport(jobid) : null;
+  TaskReport[] mapTaskReports = (job != null) ? tracker.getMapTaskReports(jobid) : null;
+  TaskReport[] reduceTaskReports = (job != null) ? tracker.getReduceTaskReports(jobid) : null;
 %>
 
 <html>
@@ -45,28 +45,21 @@
 <h2>Map Tasks</h2>
   <center>
   <table border=2 cellpadding="5" cellspacing="2">
-  <tr><td align="center">Map Task Id</td><td>Pct Complete</td><td>Diagnostic Data</td></tr>
+  <tr><td align="center">Task Id</td><td>Complete</td><td>State</td><td>Errors</td></tr>
 
   <%
+
     for (int i = 0; i < mapTaskReports.length; i++) {
-      Vector v = mapTaskReports[i];
-      String tipid = (String) v.elementAt(0);
-      String progress = (String) v.elementAt(1);
-      int diagnosticSize = ((Integer) v.elementAt(2)).intValue();
-
-      out.print("<tr><td>" + tipid + "</td><td>" + progress + "</td><td>");
-      for (int j = 0; j < diagnosticSize; j++) {
-        Vector taskData = (Vector) v.elementAt(3 + ((2 * j)));
-        String taskStateString = (String) v.elementAt(3 + ((2 * j) + 1));
-        out.print(taskStateString);
-        out.print("<b>");
-
-        for (Iterator it2 = taskData.iterator(); it2.hasNext(); ) {
-          out.print("" + it2.next());
-          out.println("<b>");
-        }
+      TaskReport report = mapTaskReports[i];
+
+      out.print("<tr><td>" + report.getTaskId() + "</td>");
+      out.print("<td>" + report.getProgress() + "</td>");
+      out.print("<td>" + report.getState() + "</td>");
+
+      String[] diagnostics = report.getDiagnostics();
+      for (int j = 0; j < diagnostics.length ; j++) {
+        out.print("<td>" + diagnostics[j] + "</td>");
       }
-      out.print("</td>");
       out.print("</tr>\n");
     }
   %>
@@ -78,28 +71,20 @@
 <h2>Reduce Tasks</h2>
   <center>
   <table border=2 cellpadding="5" cellspacing="2">
-  <tr><td align="center">Reduce Task Id</td><td>Pct Complete</td><td>Diagnostic Data</td></tr>
+  <tr><td align="center">Task Id</td><td>Complete</td><td>State</td><td>Errors</td></tr>
 
   <%
     for (int i = 0; i < reduceTaskReports.length; i++) {
-      Vector v = reduceTaskReports[i];
-      String tipid = (String) v.elementAt(0);
-      String progress = (String) v.elementAt(1);
-      int diagnosticSize = ((Integer) v.elementAt(2)).intValue();
-
-      out.print("<tr><td>" + tipid + "</td><td>" + progress + "</td><td>");
-      for (int j = 0; j < diagnosticSize; j++) {
-        Vector taskData = (Vector) v.elementAt(3 + ((2 * j)));
-        String taskStateString = (String) v.elementAt(3 + ((2 * j) + 1));
-        out.print(taskStateString);
-        out.print("<b>");
-
-        for (Iterator it2 = taskData.iterator(); it2.hasNext(); ) {
-          out.print("" + it2.next());
-          out.println("<b>");
-        }
+      TaskReport report = reduceTaskReports[i];
+
+      out.print("<tr><td>" + report.getTaskId() + "</td>");
+      out.print("<td>" + report.getProgress() + "</td>");
+      out.print("<td>" + report.getState() + "</td>");
+
+      String[] diagnostics = report.getDiagnostics();
+      for (int j = 0; j < diagnostics.length ; j++) {
+        out.print("<td>" + diagnostics[j] + "</td>");
       }
-      out.print("</td>");
       out.print("</tr>\n");
     }
   %>