<%@ page contentType="text/html; charset=UTF-8" import="javax.servlet.*" import="javax.servlet.http.*" import="java.io.*" import="java.lang.String" import="java.util.*" import="org.apache.hadoop.mapred.*" import="org.apache.hadoop.util.*" import="java.text.SimpleDateFormat" import="org.apache.hadoop.util.*" import="org.apache.hadoop.dfs.JspHelper" %> <%!static SimpleDateFormat dateFormat = new SimpleDateFormat( "d-MMM-yyyy HH:mm:ss"); private static final String PRIVATE_ACTIONS_KEY = "webinterface.private.actions";%> <%!private void printConfirm(JspWriter out, String jobid, String tipid, String taskid, String action) throws IOException { String url = "taskdetails.jsp?jobid=" + jobid + "&tipid=" + tipid + "&taskid=" + taskid; out.print("" + "

Are you sure you want to kill/fail " + taskid + " ?


" + "Kill / FailCancel
"); }%> <% JobTracker tracker = (JobTracker) application.getAttribute("job.tracker"); String jobid = request.getParameter("jobid"); String tipid = request.getParameter("tipid"); String taskid = request.getParameter("taskid"); JobID jobidObj = JobID.forName(jobid); TaskID tipidObj = TaskID.forName(tipid); TaskAttemptID taskidObj = TaskAttemptID.forName(taskid); JobInProgress job = (JobInProgress) tracker.getJob(jobidObj); boolean privateActions = JspHelper.conf.getBoolean(PRIVATE_ACTIONS_KEY, false); if (privateActions) { String action = request.getParameter("action"); if (action != null) { if (action.equalsIgnoreCase("confirm")) { String subAction = request.getParameter("subaction"); if (subAction == null) subAction = "fail-task"; printConfirm(out, jobid, tipid, taskid, subAction); return; } else if (action.equalsIgnoreCase("kill-task")) { tracker.killTask(taskidObj, false); //redirect again so that refreshing the page will not attempt to rekill the task response.sendRedirect("/taskdetails.jsp?" + "&subaction=kill-task" + "&jobid=" + jobid + "&tipid=" + tipid); } else if (action.equalsIgnoreCase("fail-task")) { tracker.killTask(taskidObj, true); response.sendRedirect("/taskdetails.jsp?" + "&subaction=fail-task" + "&jobid=" + jobid + "&tipid=" + tipid); } } } TaskStatus[] ts = (job != null) ? tracker.getTaskStatuses(tipidObj) : null; %> <%@page import="org.apache.hadoop.dfs.JspHelper"%> Hadoop Task Details

Job <%=jobid%>


All Task Attempts

<% if (ts == null || ts.length == 0) { %>

No Task Attempts found

<% } else { %> <% if (!ts[0].getIsMap()) { %> <% } %> <% for (int i = 0; i < ts.length; i++) { TaskStatus status = ts[i]; String taskTrackerName = status.getTaskTracker(); TaskTrackerStatus taskTracker = tracker.getTaskTracker(taskTrackerName); out.print(""); String taskAttemptTracker = null; if (taskTracker == null) { out.print(""); } else { taskAttemptTracker = "http://" + taskTracker.getHost() + ":" + taskTracker.getHttpPort(); out.print(""); } out.print(""); out.print(""); out.print(""); if (!ts[i].getIsMap()) { out.print(""); out.println(""); } out.println(""); out.print(""); out.print(""); out.print(""); } %>
Task AttemptsMachineStatusProgressStart TimeShuffle FinishedSort FinishedFinish TimeErrorsTask LogsCountersActions
" + status.getTaskID() + "" + taskTrackerName + "" + tracker.getNode(taskTracker.getHost()) + "" + status.getRunState() + "" + StringUtils.formatPercent(status.getProgress(), 2) + JspHelper.percentageGraph(status.getProgress() * 100f, 80) + "" + StringUtils.getFormattedTimeWithDiff(dateFormat, status .getStartTime(), 0) + "" + StringUtils.getFormattedTimeWithDiff(dateFormat, status .getShuffleFinishTime(), status.getStartTime()) + "" + StringUtils.getFormattedTimeWithDiff(dateFormat, status .getSortFinishTime(), status.getShuffleFinishTime()) + "" + StringUtils.getFormattedTimeWithDiff(dateFormat, status .getFinishTime(), status.getStartTime()) + "
");
        String [] failures = tracker.getTaskDiagnostics(status.getTaskID());
        if (failures == null) {
          out.print(" ");
        } else {
          for(int j = 0 ; j < failures.length ; j++){
            out.print(failures[j]);
            if (j < (failures.length - 1)) {
              out.print("\n-------\n");
            }
          }
        }
        out.print("
"); if (taskAttemptTracker == null) { out.print("n/a"); } else { String taskLogUrl = taskAttemptTracker + "/tasklog?taskid=" + status.getTaskID(); String tailFourKBUrl = taskLogUrl + "&start=-4097"; String tailEightKBUrl = taskLogUrl + "&start=-8193"; String entireLogUrl = taskLogUrl + "&all=true"; out.print("Last 4KB
"); out.print("Last 8KB
"); out.print("All
"); } out.print("
" + "" + ((status.getCounters() != null) ? status.getCounters().size() : 0) + ""); if (privateActions && status.getRunState() == TaskStatus.State.RUNNING) { out.print(" Kill "); out.print("
Fail "); } else out.print("
 
"); out.println("
<% if (ts[0].getIsMap()) { %>

Input Split Locations

<% for (String split: StringUtils.split(tracker.getTip( tipidObj).getSplitNodes())) { out.println(""); } %>
" + split + "
<% } } %>
Go back to the job
Go back to JobTracker
<% out.println(ServletUtil.htmlFooter()); %>