<%@ page contentType="text/html; charset=UTF-8" import="javax.servlet.*" import="javax.servlet.http.*" import="java.io.*" import="java.util.*" import="java.text.DecimalFormat" import="org.apache.hadoop.mapred.*" import="org.apache.hadoop.util.*" %> <% JobTracker tracker = (JobTracker) application.getAttribute("job.tracker"); String trackerName = StringUtils.simpleHostname(tracker.getJobTrackerMachine()); JobQueueInfo[] queues = tracker.getQueues(); Vector runningJobs = tracker.runningJobs(); Vector completedJobs = tracker.completedJobs(); Vector failedJobs = tracker.failedJobs(); %> <%! private static DecimalFormat percentFormat = new DecimalFormat("##0.00"); public void generateSummaryTable(JspWriter out, JobTracker tracker) throws IOException { ClusterStatus status = tracker.getClusterStatus(); String tasksPerNode = status.getTaskTrackers() > 0 ? percentFormat.format(((double)(status.getMaxMapTasks() + status.getMaxReduceTasks())) / status.getTaskTrackers()): "-"; out.print("\n"+ "" + "" + "" + "\n"); out.print("
MapsReducesTotal SubmissionsNodesMap Task CapacityReduce Task CapacityAvg. Tasks/Node
" + status.getMapTasks() + "" + status.getReduceTasks() + "" + tracker.getTotalSubmissions() + "" + status.getTaskTrackers() + "" + status.getMaxMapTasks() + "" + status.getMaxReduceTasks() + "" + tasksPerNode + "
\n"); out.print("
"); if (tracker.hasRestarted()) { out.print(""); if (tracker.hasRecovered()) { out.print("The JobTracker got restarted and recovered back in " ); out.print(StringUtils.formatTime(tracker.getRecoveryDuration())); } else { out.print("The JobTracker got restarted and is still recovering"); } out.print(""); } }%> <%= trackerName %> Hadoop Map/Reduce Administration <% JSPUtil.processButtons(request, response, tracker); %>

<%= trackerName %> Hadoop Map/Reduce Administration

State: <%= tracker.getClusterStatus().getJobTrackerState() %>
Started: <%= new Date(tracker.getStartTime())%>
Version: <%= VersionInfo.getVersion()%>, r<%= VersionInfo.getRevision()%>
Compiled: <%= VersionInfo.getDate()%> by <%= VersionInfo.getUser()%>
Identifier: <%= tracker.getTrackerIdentifier()%>

Cluster Summary

<% generateSummaryTable(out, tracker); %>

Scheduling Information

<% for(JobQueueInfo queue: queues) { String queueName = queue.getQueueName(); String schedulingInformation = queue.getSchedulingInfo(); if(schedulingInformation == null || schedulingInformation.trim().equals("")) { schedulingInformation = "NA"; } %> <% } %>
Queue Name Scheduling Information
<%=queueName%> <%=schedulingInformation.replaceAll("\n","
") %>

Filter (Jobid, Priority, User, Name)
Example: 'user:smith 3200' will filter by 'smith' only in the user field and '3200' in all fields

Running Jobs

<%=JSPUtil.generateJobTable("Running", runningJobs, 30, 0)%>

Completed Jobs

<%=JSPUtil.generateJobTable("Completed", completedJobs, 0, runningJobs.size())%>

Failed Jobs

<%=JSPUtil.generateJobTable("Failed", failedJobs, 0, (runningJobs.size()+completedJobs.size()))%>

Local Logs

Log directory, Job Tracker History <% out.println(ServletUtil.htmlFooter()); %>