<%@ page contentType="application/json; charset=UTF-8" import="javax.servlet.*" import="javax.servlet.http.*" import="java.io.*" import="java.util.*" import="java.text.DecimalFormat" import="org.apache.hadoop.http.HtmlQuoting" 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(); %> <% StringBuffer sb = new StringBuffer(); int rowId = 0; sb.append("{\"data\":["); for (Iterator it = completedJobs.iterator(); it.hasNext(); ++rowId) { JobInProgress job = it.next(); JobProfile profile = job.getProfile(); JobStatus status = job.getStatus(); JobID jobid = profile.getJobID(); String name = HtmlQuoting.quoteHtmlChars(profile.getJobName()); String schedulingInfo = HtmlQuoting.quoteHtmlChars(job.getStatus().getSchedulingInfo()); if (rowId != 0) sb.append(","); sb.append("{\"id\":\"" + jobid + "\",\"priority\":\"" + job.getPriority().toString() + "\",\"user\":\"" + profile.getUser() + "\",\"name\":\"" + ("".equals(name) ? "" : name) + "\",\"mapProgress\":" + status.mapProgress() + ",\"desiredMaps\":" + job.desiredMaps() + ",\"completedMaps\":" + job.finishedMaps() + ",\"reduceProgress\":" + status.reduceProgress() + ",\"desiredReduces\":" + job.desiredReduces() + ",\"completedReduces\":" + job.finishedReduces() + ",\"startTime\":" + job.getStartTime() + ",\"finishTime\":" + job.getFinishTime() + ",\"schedulingInfo\":\"" + schedulingInfo + "\",\"status\":\"" + status.getJobRunState(status.getRunState()) + "\"}"); } sb.append("]}"); out.println(sb.toString()); %>