diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/AppAttemptBlock.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/AppAttemptBlock.java index 8df94e6..5403c48 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/AppAttemptBlock.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/AppAttemptBlock.java @@ -149,6 +149,8 @@ public ApplicationAttemptReport run() throws Exception { createAttemptHeadRoomTable(html); html._(InfoBlock.class); + createTablesForAttemptMetrics(html); + // Container Table TBODY> tbody = html.table("#containers").thead().tr().th(".id", "Container ID") @@ -237,4 +239,8 @@ protected boolean hasAMContainer(ContainerId containerId, protected void createAttemptHeadRoomTable(Block html) { } + + protected void createTablesForAttemptMetrics(Block html) { + + } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppAttemptBlock.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppAttemptBlock.java index 1861874..bdfb37a 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppAttemptBlock.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppAttemptBlock.java @@ -45,10 +45,10 @@ import org.apache.hadoop.yarn.webapp.hamlet.Hamlet; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.DIV; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TABLE; -import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TBODY; import org.apache.hadoop.yarn.webapp.util.WebAppUtils; import org.apache.hadoop.yarn.webapp.view.InfoBlock; import com.google.inject.Inject; +import java.util.List; import java.util.Collection; import java.util.Set; @@ -65,35 +65,33 @@ this.conf = conf; } - @Override - protected void render(Block html) { - super.render(html); - createContainerLocalityTable(html); - createResourceRequestsTable(html); - } - private void createResourceRequestsTable(Block html) { AppInfo app = new AppInfo(rm, rm.getRMContext().getRMApps() .get(this.appAttemptId.getApplicationId()), true, WebAppUtils.getHttpSchemePrefix(conf)); - TBODY> tbody = - html.table("#ResourceRequests").thead().tr() - .th(".priority", "Priority") - .th(".resourceName", "ResourceName") - .th(".totalResource", "Capability") - .th(".numContainers", "NumContainers") - .th(".relaxLocality", "RelaxLocality") - .th(".nodeLabelExpression", "NodeLabelExpression")._()._().tbody(); - Resource totalResource = Resource.newInstance(0, 0); + DIV div = html.div(_INFO_WRAP); + TABLE> table = + div.h3("Total Outstanding Resource Requests: " + + getTotalResource(app.getResourceRequests())).table( + "#ResourceRequests"); + + table.tr(). + th(".priority", "Priority"). + th(".resourceName", "ResourceName"). + th(".totalResource", "Capability"). + th(".numContainers", "NumContainers"). + th(".relaxLocality", "RelaxLocality"). + th(".nodeLabelExpression", "NodeLabelExpression"). + _(); + if (app.getResourceRequests() != null) { for (ResourceRequest request : app.getResourceRequests()) { if (request.getNumContainers() == 0) { continue; } - - tbody.tr() + table.tr() .td(String.valueOf(request.getPriority())) .td(request.getResourceName()) .td(String.valueOf(request.getCapability())) @@ -101,16 +99,29 @@ private void createResourceRequestsTable(Block html) { .td(String.valueOf(request.getRelaxLocality())) .td(request.getNodeLabelExpression() == null ? "N/A" : request .getNodeLabelExpression())._(); - if (request.getResourceName().equals(ResourceRequest.ANY)) { - Resources.addTo(totalResource, - Resources.multiply(request.getCapability(), - request.getNumContainers())); - } } } - html.div().$class("totalResourceRequests") - .h3("Total Outstanding Resource Requests: " + totalResource)._(); - tbody._()._(); + table._(); + div._(); + } + + private Resource getTotalResource(List requests) { + Resource totalResource = Resource.newInstance(0, 0); + if (requests == null) { + return totalResource; + } + for (ResourceRequest request : requests) { + if (request.getNumContainers() == 0) { + continue; + } + if (request.getResourceName().equals(ResourceRequest.ANY)) { + Resources.addTo( + totalResource, + Resources.multiply(request.getCapability(), + request.getNumContainers())); + } + } + return totalResource; } private void createContainerLocalityTable(Block html) { @@ -241,4 +252,10 @@ protected void generateOverview(ApplicationAttemptReport appAttemptReport, } return null; } + + @Override + protected void createTablesForAttemptMetrics(Block html) { + createContainerLocalityTable(html); + createResourceRequestsTable(html); + } }