| <% |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| %> |
| <%@ 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()); |
| String type = request.getParameter("type"); |
| %> |
| <%! |
| public void generateTaskTrackerTable(JspWriter out, |
| String type, |
| JobTracker tracker) throws IOException { |
| Collection c; |
| if (("blacklisted").equals(type)) { |
| c = tracker.blacklistedTaskTrackers(); |
| } else if (("active").equals(type)) { |
| c = tracker.activeTaskTrackers(); |
| } else { |
| c = tracker.taskTrackers(); |
| } |
| if (c.size() == 0) { |
| out.print("There are currently no known " + type + " Task Trackers."); |
| } else { |
| out.print("<center>\n"); |
| out.print("<table border=\"2\" cellpadding=\"5\" cellspacing=\"2\">\n"); |
| out.print("<tr><td align=\"center\" colspan=\"6\"><b>Task Trackers</b></td></tr>\n"); |
| out.print("<tr><td><b>Name</b></td><td><b>Host</b></td>" + |
| "<td><b># running tasks</b></td>" + |
| "<td><b>Max Map Tasks</b></td>" + |
| "<td><b>Max Reduce Tasks</b></td>" + |
| "<td><b>Failures</b></td>" + |
| "<td><b>Seconds since heartbeat</b></td></tr>\n"); |
| int maxFailures = 0; |
| String failureKing = null; |
| 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.getTaskReports().iterator(); it2.hasNext(); ) { |
| it2.next(); |
| numCurTasks++; |
| } |
| int numFailures = tt.getFailures(); |
| if (numFailures > maxFailures) { |
| maxFailures = numFailures; |
| failureKing = tt.getTrackerName(); |
| } |
| out.print("<tr><td><a href=\"http://"); |
| out.print(tt.getHost() + ":" + tt.getHttpPort() + "/\">"); |
| out.print(tt.getTrackerName() + "</a></td><td>"); |
| out.print(tt.getHost() + "</td><td>" + numCurTasks + |
| "</td><td>" + tt.getMaxMapTasks() + |
| "</td><td>" + tt.getMaxReduceTasks() + |
| "</td><td>" + numFailures + |
| "</td><td>" + sinceHeartbeat + "</td></tr>\n"); |
| } |
| out.print("</table>\n"); |
| out.print("</center>\n"); |
| if (maxFailures > 0) { |
| out.print("Highest Failures: " + failureKing + " with " + maxFailures + |
| " failures<br>\n"); |
| } |
| } |
| } |
| |
| %> |
| |
| <html> |
| |
| <title><%=trackerName%> Hadoop Machine List</title> |
| |
| <body> |
| <h1><a href="jobtracker.jsp"><%=trackerName%></a> Hadoop Machine List</h1> |
| |
| <h2>Task Trackers</h2> |
| <% |
| generateTaskTrackerTable(out, type, tracker); |
| %> |
| |
| <% |
| out.println(ServletUtil.htmlFooter()); |
| %> |