diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
index 5acabf5..6ca5011 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java
@@ -24,10 +24,11 @@
public class WebPageUtils {
public static String appsTableInit() {
- return appsTableInit(false);
+ return appsTableInit(false, true);
}
- public static String appsTableInit(boolean isFairSchedulerPage) {
+ public static String appsTableInit(
+ boolean isFairSchedulerPage, boolean isResourceManager) {
// id, user, name, queue, starttime, finishtime, state, status, progress, ui
// FairSchedulerPage's table is a bit different
return tableInit()
@@ -35,22 +36,30 @@ public static String appsTableInit(boolean isFairSchedulerPage) {
.append(", bDeferRender: true")
.append(", bProcessing: true")
.append("\n, aoColumnDefs: ")
- .append(getAppsTableColumnDefs(isFairSchedulerPage))
+ .append(getAppsTableColumnDefs(isFairSchedulerPage, isResourceManager))
// Sort by id upon page load
.append(", aaSorting: [[0, 'desc']]}").toString();
}
- private static String getAppsTableColumnDefs(boolean isFairSchedulerPage) {
+ private static String getAppsTableColumnDefs(
+ boolean isFairSchedulerPage, boolean isResourceManager) {
StringBuilder sb = new StringBuilder();
- return sb
- .append("[\n")
+ sb.append("[\n")
.append("{'sType':'string', 'aTargets': [0]")
.append(", 'mRender': parseHadoopID }")
.append("\n, {'sType':'numeric', 'aTargets': " +
(isFairSchedulerPage ? "[6, 7]": "[5, 6]"))
.append(", 'mRender': renderHadoopDate }")
- .append("\n, {'sType':'numeric', bSearchable:false, 'aTargets': [9]")
- .append(", 'mRender': parseHadoopProgress }]").toString();
+ .append("\n, {'sType':'numeric', bSearchable:false, 'aTargets':");
+ if (isFairSchedulerPage) {
+ sb.append("[11]");
+ } else if (isResourceManager) {
+ sb.append("[10]");
+ } else {
+ sb.append("[9]");
+ }
+ sb.append(", 'mRender': parseHadoopProgress }]");
+ return sb.toString();
}
public static String attemptsTableInit() {
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/dao/AppInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/dao/AppInfo.java
index e8b1acc..3eafb8c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/dao/AppInfo.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/dao/AppInfo.java
@@ -42,6 +42,7 @@
protected String host;
protected int rpcPort;
protected YarnApplicationState appState;
+ protected int runningContainers;
protected float progress;
protected String diagnosticsInfo;
protected String originalTrackingUrl;
@@ -77,6 +78,10 @@ public AppInfo(ApplicationReport app) {
finishedTime = app.getFinishTime();
elapsedTime = Times.elapsed(startedTime, finishedTime);
finalAppStatus = app.getFinalApplicationStatus();
+ if (app.getApplicationResourceUsageReport() != null) {
+ runningContainers =
+ app.getApplicationResourceUsageReport().getNumUsedContainers();
+ }
progress = app.getProgress() * 100; // in percent
if (app.getApplicationTags() != null && !app.getApplicationTags().isEmpty()) {
this.applicationTags = CSV_JOINER.join(app.getApplicationTags());
@@ -119,6 +124,10 @@ public YarnApplicationState getAppState() {
return appState;
}
+ public int getRunningContainers() {
+ return runningContainers;
+ }
+
public float getProgress() {
return progress;
}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerAppsBlock.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerAppsBlock.java
index 8a5f4bd..9650dfe 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerAppsBlock.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerAppsBlock.java
@@ -91,6 +91,7 @@ public FairSchedulerAppsBlock(ResourceManager rm, ViewContext ctx,
th(".finishtime", "FinishTime").
th(".state", "State").
th(".finalstatus", "FinalStatus").
+ th(".runningcontainer", "Running Containers").
th(".progress", "Progress").
th(".ui", "Tracking UI")._()._().
tbody();
@@ -132,6 +133,7 @@ public FairSchedulerAppsBlock(ResourceManager rm, ViewContext ctx,
.append(appInfo.getFinishTime()).append("\",\"")
.append(appInfo.getState()).append("\",\"")
.append(appInfo.getFinalStatus()).append("\",\"")
+ .append(appInfo.getRunningContainers()).append("\",\"")
// Progress bar
.append("