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 2007/09/25 14:05:04 UTC
svn commit: r579212 - in /lucene/hadoop/trunk: ./
src/java/org/apache/hadoop/mapred/ src/webapps/job/
Author: ddas
Date: Tue Sep 25 05:05:02 2007
New Revision: 579212
URL: http://svn.apache.org/viewvc?rev=579212&view=rev
Log:
HADOOP-1921. Save the configuration of completed/failed jobs and make them available via the web-ui.
Modified:
lucene/hadoop/trunk/CHANGES.txt
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobHistory.java
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java
lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobTracker.java
lucene/hadoop/trunk/src/webapps/job/jobconf.jsp
lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp
lucene/hadoop/trunk/src/webapps/job/jobdetailshistory.jsp
Modified: lucene/hadoop/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?rev=579212&r1=579211&r2=579212&view=diff
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Tue Sep 25 05:05:02 2007
@@ -190,6 +190,9 @@
IMPROVEMENTS
+ HADOOP-1921. Save the configuration of completed/failed jobs and make them
+ available via the web-ui. (Amar Kamat via devaraj)
+
HADOOP-1266. Remove dependency of package org.apache.hadoop.net on
org.apache.hadoop.dfs. (Hairong Kuang via dhruba)
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobHistory.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobHistory.java?rev=579212&r1=579211&r2=579212&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobHistory.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobHistory.java Tue Sep 25 05:05:02 2007
@@ -316,23 +316,34 @@
public Map<String, Task> getAllTasks() { return allTasks; }
/**
+ * Get the path of the locally stored job file
+ * @param jobId id of the job
+ * @return the path of the job file on the local file system
+ */
+ public static String getLocalJobFilePath(String jobId){
+ return LOG_DIR + File.separator + jobId + "_conf.xml";
+ }
+
+ /**
* Log job submitted event to history. Creates a new file in history
* for the job. if history file creation fails, it disables history
* for all other events.
- * @param jobId job id assigned by job tracker.
- * @param jobName job name as given by user in job conf
- * @param user user name
+ * @param jobId job id assigned by job tracker.
+ * @param jobConf job conf of the job
+ * @param jobConfPath path to job conf xml file in HDFS.
* @param submitTime time when job tracker received the job
- * @param jobConf path to job conf xml file in HDFS.
*/
- public static void logSubmitted(String jobId, String jobName, String user,
- long submitTime, String jobConf){
-
+ public static void logSubmitted(String jobId, JobConf jobConf,
+ String jobConfPath, long submitTime) {
+ String jobName = jobConf.getJobName();
+ String user = jobConf.getUser();
if (!disableHistory){
synchronized(MASTER_INDEX_LOG_FILE){
JobHistory.log(masterIndex, RecordTypes.Job,
new Enum[]{Keys.JOBID, Keys.JOBNAME, Keys.USER, Keys.SUBMIT_TIME, Keys.JOBCONF },
- new String[]{jobId, jobName, user, String.valueOf(submitTime), jobConf });
+ new String[]{jobId, jobName, user,
+ String.valueOf(submitTime), jobConfPath}
+ );
}
// setup the history log file for this job
String logFileName = JOBTRACKER_START_TIME + "_" + jobId;
@@ -344,12 +355,27 @@
// add to writer as well
JobHistory.log(writer, RecordTypes.Job,
new Enum[]{Keys.JOBID, Keys.JOBNAME, Keys.USER, Keys.SUBMIT_TIME, Keys.JOBCONF },
- new String[]{jobId, jobName, user, String.valueOf(submitTime) , jobConf});
+ new String[]{jobId, jobName, user,
+ String.valueOf(submitTime) , jobConfPath}
+ );
}catch(IOException e){
LOG.error("Failed creating job history log file, disabling history", e);
disableHistory = true;
}
+ }
+ /* Storing the job conf on the local file system */
+ String localJobFilePath = JobInfo.getLocalJobFilePath(jobId);
+ File localJobFile = new File(localJobFilePath);
+ try {
+ FileOutputStream jobOut = new FileOutputStream(localJobFile);
+ jobConf.write(jobOut);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Job conf for " + jobId + " stored at "
+ + localJobFile.getAbsolutePath());
+ }
+ } catch (IOException ioe) {
+ LOG.error("Failed to store job conf on the local filesystem ", ioe);
}
}
/**
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java?rev=579212&r1=579211&r2=579212&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobInProgress.java Tue Sep 25 05:05:02 2007
@@ -159,9 +159,8 @@
this.mapFailuresPercent = conf.getMaxMapTaskFailuresPercent();
this.reduceFailuresPercent = conf.getMaxReduceTaskFailuresPercent();
- JobHistory.JobInfo.logSubmitted(jobid, conf.getJobName(), conf.getUser(),
- System.currentTimeMillis(),
- jobFile.toString());
+ JobHistory.JobInfo.logSubmitted(jobid, conf, jobFile.toString(),
+ System.currentTimeMillis());
MetricsContext metricsContext = MetricsUtil.getContext("mapred");
this.jobMetrics = MetricsUtil.createRecord(metricsContext, "job");
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobTracker.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/JobTracker.java?rev=579212&r1=579211&r2=579212&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 Tue Sep 25 05:05:02 2007
@@ -1832,6 +1832,14 @@
}
}
+ /**
+ * Get the localized job file path on the job trackers local file system
+ * @param jobId id of the job
+ * @return the path of the job conf file on the local file system
+ */
+ public static String getLocalJobFilePath(String jobId){
+ return JobHistory.JobInfo.getLocalJobFilePath(jobId);
+ }
////////////////////////////////////////////////////////////
// main()
////////////////////////////////////////////////////////////
Modified: lucene/hadoop/trunk/src/webapps/job/jobconf.jsp
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/job/jobconf.jsp?rev=579212&r1=579211&r2=579212&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/webapps/job/jobconf.jsp (original)
+++ lucene/hadoop/trunk/src/webapps/job/jobconf.jsp Tue Sep 25 05:05:02 2007
@@ -26,28 +26,12 @@
<h2>Job Configuration: JobId - <%= jobId %></h2><br>
<%
- JobInProgress job = (JobInProgress)tracker.getJob(jobId);
- if (job == null) {
- out.print("<h4>Job '" + jobId + "' not found!</h4><br>\n");
- return;
- }
-
- JobStatus status = job.getStatus();
- int runState = status.getRunState();
- if (runState != JobStatus.RUNNING) {
- out.print("<h4>Job '" + jobId + "' not running!</h4><br>\n");
- return;
- }
-
+ String jobFilePath = tracker.getLocalJobFilePath(jobId);
try {
- JobConf jobConf = job.getJobConf();
- ByteArrayOutputStream jobConfXML = new ByteArrayOutputStream();
- jobConf.write(jobConfXML);
+ JobConf jobConf = new JobConf(jobFilePath);
XMLUtils.transform(
jobConf.getConfResourceAsInputStream("webapps/static/jobconf.xsl"),
- new ByteArrayInputStream(jobConfXML.toByteArray()),
- out
- );
+ new FileInputStream(jobFilePath), out);
} catch (Exception e) {
out.println("Failed to retreive job configuration for job '" + jobId + "!");
out.println(e);
Modified: lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp?rev=579212&r1=579211&r2=579212&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp (original)
+++ lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp Tue Sep 25 05:05:02 2007
@@ -146,12 +146,8 @@
int flakyTaskTrackers = job.getNoOfBlackListedTrackers();
out.print("<b>User:</b> " + profile.getUser() + "<br>\n");
out.print("<b>Job Name:</b> " + profile.getJobName() + "<br>\n");
- if (runState == JobStatus.RUNNING) {
- out.print("<b>Job File:</b> <a href=\"jobconf.jsp?jobid=" + jobId + "\">" +
- profile.getJobFile() + "</a><br>\n");
- } else {
- out.print("<b>Job File:</b> " + profile.getJobFile() + "<br>\n");
- }
+ out.print("<b>Job File:</b> <a href=\"jobconf.jsp?jobid=" + jobId + "\">"
+ + profile.getJobFile() + "</a><br>\n");
if (runState == JobStatus.RUNNING) {
out.print("<b>Status:</b> Running<br>\n");
out.print("<b>Started at:</b> " + new Date(job.getStartTime()) + "<br>\n");
Modified: lucene/hadoop/trunk/src/webapps/job/jobdetailshistory.jsp
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/job/jobdetailshistory.jsp?rev=579212&r1=579211&r2=579212&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/webapps/job/jobdetailshistory.jsp (original)
+++ lucene/hadoop/trunk/src/webapps/job/jobdetailshistory.jsp Tue Sep 25 05:05:02 2007
@@ -24,7 +24,8 @@
<b>User: </b> <%=job.get(Keys.USER) %><br/>
<b>JobName: </b> <%=job.get(Keys.JOBNAME) %><br/>
-<b>JobConf: </b> <%=job.get(Keys.JOBCONF) %><br/>
+<b>JobConf: </b> <a href="jobconf.jsp?jobid=<%=jobid %>">
+ <%=job.get(Keys.JOBCONF) %></a><br/>
<b>Submitted At: </b> <%=StringUtils.getFormattedTimeWithDiff(dateFormat, job.getLong(Keys.SUBMIT_TIME), 0 ) %><br/>
<b>Launched At: </b> <%=StringUtils.getFormattedTimeWithDiff(dateFormat, job.getLong(Keys.LAUNCH_TIME), job.getLong(Keys.SUBMIT_TIME)) %><br/>
<b>Finished At: </b> <%=StringUtils.getFormattedTimeWithDiff(dateFormat, job.getLong(Keys.FINISH_TIME), job.getLong(Keys.LAUNCH_TIME)) %><br/>