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("