<%@ page contentType="text/html; charset=UTF-8" import="javax.servlet.*" import="javax.servlet.http.*" import="java.io.*" import="java.util.*" import="org.apache.hadoop.mapred.*" import="org.apache.hadoop.util.*" %> <%! JobTracker tracker = JobTracker.getTracker(); String trackerName = StringUtils.simpleHostname(tracker.getJobTrackerMachine()); private void printFailedAttempts(JspWriter out, String jobId, TaskInProgress tip) throws IOException { TaskStatus[] statuses = tip.getTaskStatuses(); String tipId = tip.getTIPId(); for(int i=0; i < statuses.length; ++i) { if (statuses[i].getRunState() == TaskStatus.State.FAILED) { String taskTrackerName = statuses[i].getTaskTracker(); TaskTrackerStatus taskTracker = tracker.getTaskTracker(taskTrackerName); out.print("" + statuses[i].getTaskId() + "" + tipId + ""); if (taskTracker == null) { out.print("" + taskTrackerName + ""); } else { out.print("" + taskTracker.getHost() + ""); } out.print("
");
        List failures = 
                     tracker.getTaskDiagnostics(jobId, tipId, 
                                                statuses[i].getTaskId());
        if (failures == null) {
          out.print(" ");
        } else {
          for(Iterator itr = failures.iterator(); itr.hasNext(); ) {
            out.print(itr.next());
            if (itr.hasNext()) {
              out.print("\n-------\n");
            }
          }
        }
        out.print("
"); out.print(""); if (taskTracker != null) { String taskLogUrl = "http://" + taskTracker.getHost() + ":" + taskTracker.getHttpPort() + "/tasklog.jsp?taskid=" + statuses[i].getTaskId(); String tailFourKBUrl = taskLogUrl + "&tail=true&tailsize=4096"; String tailEightKBUrl = taskLogUrl + "&tail=true&tailsize=8192"; String entireLogUrl = taskLogUrl + "&all=true"; out.print("Last 4KB
"); out.print("Last 8KB
"); out.print("All
"); } else { out.print("n/a"); // task tracker was lost } out.print(""); out.print("\n"); } } } private void printFailures(JspWriter out, String jobId, String kind) throws IOException { JobInProgress job = (JobInProgress) tracker.getJob(jobId); if (job == null) { out.print("Job " + jobId + " not found.
\n"); return; } boolean includeMap = false; boolean includeReduce = false; if (kind == null) { includeMap = true; includeReduce = true; } else if ("map".equals(kind)) { includeMap = true; } else if ("reduce".equals(kind)) { includeReduce = true; } else if ("all".equals(kind)) { includeMap = true; includeReduce = true; } else { out.print("Kind " + kind + " not supported.
\n"); return; } out.print(""); out.print("" + "\n"); if (includeMap) { TaskInProgress[] tips = job.getMapTasks(); for(int i=0; i < tips.length; ++i) { printFailedAttempts(out, jobId, tips[i]); } } if (includeReduce) { TaskInProgress[] tips = job.getReduceTasks(); for(int i=0; i < tips.length; ++i) { printFailedAttempts(out, jobId, tips[i]); } } out.print("
AttemptTaskMachineErrorLogs
\n"); } %> <% String jobId = request.getParameter("jobid"); String kind = request.getParameter("kind"); %> Hadoop <%=jobId%> failures on <%=trackerName%>

Hadoop <%=jobId%> failures on <%=trackerName%>

<% printFailures(out, jobId, kind); %>
Go back to JobTracker
Hadoop, 2006.