Repository: hadoop Updated Branches: refs/heads/branch-2 bd750f160 -> 3884948d6
YARN-3406. Display count of running containers in the RM's Web UI. Contributed by Ryu Kobayashi. (cherry picked from commit 4a3dabd94fc3dddd9d7604b826065c23859d565f) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/3884948d Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/3884948d Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/3884948d Branch: refs/heads/branch-2 Commit: 3884948d6c7045de9123e78d5ef00602d7d4410b Parents: bd750f1 Author: Tsuyoshi Ozawa <oz...@apache.org> Authored: Sat Apr 25 07:17:11 2015 +0900 Committer: Tsuyoshi Ozawa <oz...@apache.org> Committed: Sat Apr 25 07:17:42 2015 +0900 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 3 +++ .../hadoop/yarn/server/webapp/WebPageUtils.java | 25 +++++++++++++------- .../hadoop/yarn/server/webapp/dao/AppInfo.java | 9 +++++++ .../webapp/FairSchedulerAppsBlock.java | 2 ++ .../webapp/FairSchedulerPage.java | 2 +- .../resourcemanager/webapp/RMAppsBlock.java | 6 ++++- 6 files changed, 37 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/3884948d/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 14c419b..1f486e4 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -120,6 +120,9 @@ Release 2.8.0 - UNRELEASED YARN-3511. Add errors and warnings page to ATS. (Varun Vasudev via xgong) + YARN-3406. Display count of running containers in the RM's Web UI. + (Ryu Kobayashi via ozawa) + OPTIMIZATIONS YARN-3339. TestDockerContainerExecutor should pull a single image and not http://git-wip-us.apache.org/repos/asf/hadoop/blob/3884948d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java ---------------------------------------------------------------------- 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 @@ import static org.apache.hadoop.yarn.webapp.view.JQueryUI.tableInit; 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 class WebPageUtils { .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() { http://git-wip-us.apache.org/repos/asf/hadoop/blob/3884948d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/dao/AppInfo.java ---------------------------------------------------------------------- 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 @@ public class AppInfo { 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 class AppInfo { 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 class AppInfo { return appState; } + public int getRunningContainers() { + return runningContainers; + } + public float getProgress() { return progress; } http://git-wip-us.apache.org/repos/asf/hadoop/blob/3884948d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerAppsBlock.java ---------------------------------------------------------------------- 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 class FairSchedulerAppsBlock extends HtmlBlock { 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 class FairSchedulerAppsBlock extends HtmlBlock { .append(appInfo.getFinishTime()).append("\",\"") .append(appInfo.getState()).append("\",\"") .append(appInfo.getFinalStatus()).append("\",\"") + .append(appInfo.getRunningContainers()).append("\",\"") // Progress bar .append("<br title='").append(percent) .append("'> <div class='").append(C_PROGRESSBAR).append("' title='") http://git-wip-us.apache.org/repos/asf/hadoop/blob/3884948d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java ---------------------------------------------------------------------- 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/FairSchedulerPage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java index 97ab872..76d7e6f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java @@ -237,7 +237,7 @@ public class FairSchedulerPage extends RmView { @Override protected String initAppsTable() { - return WebPageUtils.appsTableInit(true); + return WebPageUtils.appsTableInit(true, false); } static String percent(float f) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/3884948d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppsBlock.java ---------------------------------------------------------------------- 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/RMAppsBlock.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppsBlock.java index 29565e4..715d9d9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppsBlock.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppsBlock.java @@ -57,7 +57,9 @@ public class RMAppsBlock extends AppsBlock { .th(".name", "Name").th(".type", "Application Type") .th(".queue", "Queue").th(".starttime", "StartTime") .th(".finishtime", "FinishTime").th(".state", "State") - .th(".finalstatus", "FinalStatus").th(".progress", "Progress") + .th(".finalstatus", "FinalStatus") + .th(".runningcontainer", "Running Containers") + .th(".progress", "Progress") .th(".ui", "Tracking UI").th(".blacklisted", "Blacklisted Nodes")._() ._().tbody(); @@ -108,6 +110,8 @@ public class RMAppsBlock extends AppsBlock { .append("\",\"") .append(app.getFinalAppStatus()) .append("\",\"") + .append(String.valueOf(app.getRunningContainers())) + .append("\",\"") // Progress bar .append("<br title='").append(percent).append("'> <div class='") .append(C_PROGRESSBAR).append("' title='").append(join(percent, '%'))