<%@ 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.*" %> <%! JobTracker tracker = JobTracker.getTracker(); String trackerLabel = tracker.getJobTrackerMachine() + ":" + tracker.getTrackerPort(); private static DecimalFormat percentFormat = new DecimalFormat("##0.00"); public void generateTaskTrackerTable(JspWriter out) throws IOException { Collection c = tracker.taskTrackers(); if (c.size() == 0) { out.print("There are currently no known TaskTracker(s)."); } else { out.print("
\n"); out.print("\n"); out.print("\n"); out.print("\n"); for (Iterator it = c.iterator(); it.hasNext(); ) { TaskTrackerStatus tt = (TaskTrackerStatus) it.next(); long sinceHeartbeat = System.currentTimeMillis() - tt.getLastSeen(); if (sinceHeartbeat > 0) { sinceHeartbeat = sinceHeartbeat / 1000; } int numCurTasks = 0; for (Iterator it2 = tt.taskReports(); it2.hasNext(); ) { it2.next(); numCurTasks++; } out.print("\n"); } out.print("
Task Trackers
NameHost# running tasksSecs since heartbeat
" + tt.getTrackerName() + "" + tt.getHost() + "" + numCurTasks + "" + sinceHeartbeat + "
\n"); out.print("
\n"); } } public void generateJobTable(JspWriter out, String label, Vector jobs) throws IOException { out.print("
\n"); out.print("\n"); out.print("\n"); if (jobs.size() > 0) { out.print(""); out.print(""); out.print(""); out.print(""); out.print(""); out.print("\n"); for (Iterator it = jobs.iterator(); it.hasNext(); ) { JobInProgress job = (JobInProgress) it.next(); JobProfile profile = job.getProfile(); JobStatus status = job.getStatus(); String jobid = profile.getJobId(); double completedRatio = (0.5 * (100 * status.mapProgress())) + (0.5 * (100 * status.reduceProgress())); int desiredMaps = job.desiredMaps(); int desiredReduces = job.desiredReduces(); int completedMaps = job.finishedMaps(); int completedReduces = job.finishedReduces(); String name = profile.getJobName(); out.print("\n"); } } else { out.print("\n"); } out.print("
" + label + " Jobs
JobidUserName% completeRequired mapsmaps completedRequired reducesreduces completed
" + jobid + ""+ profile.getUser() + "" + ("".equals(name) ? " " : name) + "" + percentFormat.format(completedRatio) + "%" + desiredMaps + "" + completedMaps + "" + desiredReduces + " " + completedReduces + "
none
\n"); out.print("
\n"); } public void generateSummaryTable(JspWriter out) throws IOException { ClusterStatus status = tracker.getClusterStatus(); out.print("\n"+ "" + "\n"); out.print("
MapsReducesCapacityNodes
" + status.getMapTasks() + "" + status.getReduceTasks() + "" + status.getMaxTasks() + "" + status.getTaskTrackers() + "
\n"); } %> Hadoop MapReduce General Administration

JobTracker '<%=trackerLabel%>'

This JobTracker has been up since <%= new Date(tracker.getStartTime())%>.

Cluster Summary

<% generateSummaryTable(out); %>

Task Trackers

<% generateTaskTrackerTable(out); %>

Running Jobs

<% generateJobTable(out, "Running", tracker.runningJobs()); %>

Completed Jobs

<% generateJobTable(out, "Completed", tracker.completedJobs()); %>

Failed Jobs

<% generateJobTable(out, "Failed", tracker.failedJobs()); %>
Hadoop, 2006.