<%@ 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"); ClusterStatus status = tracker.getClusterStatus(); 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, ClusterStatus status, JobTracker tracker) throws IOException { 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/NodeBlacklisted Nodes
" + status.getMapTasks() + "" + status.getReduceTasks() + "" + tracker.getTotalSubmissions() + "" + status.getTaskTrackers() + "" + status.getMaxMapTasks() + "" + status.getMaxReduceTasks() + "" + tasksPerNode + "" + status.getBlacklistedTrackers() + "" + "
\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: <%= status.getJobTrackerState() %>
Started: <%= new Date(tracker.getStartTime())%>
Version: <%= VersionInfo.getVersion()%>, r<%= VersionInfo.getRevision()%>
Compiled: <%= VersionInfo.getDate()%> by <%= VersionInfo.getUser()%>
Identifier: <%= tracker.getTrackerIdentifier()%>

Cluster Summary (Heap Size is <%= StringUtils.byteDesc(status.getUsedMemory()) %>/<%= StringUtils.byteDesc(status.getMaxMemory()) %>)

<% generateSummaryTable(out, status, 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()); %>