Repository: hadoop Updated Branches: refs/heads/branch-2.6 c0b17bf10 -> e181498a6
YARN-2503. Added node lablels in web UI. Contributed by Wangda Tan (cherry picked from commit d5e0a09721a5156fa2ee51ac1c32fbfd9905b8fb) (cherry picked from commit 720de7eb4ca310e8d800938fbb56fd4de06fc6a5) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e181498a Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e181498a Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e181498a Branch: refs/heads/branch-2.6 Commit: e181498a672ae14dc0309518206b7d1dd8c52dfa Parents: c0b17bf Author: Jian He <[email protected]> Authored: Tue Oct 28 17:57:54 2014 -0700 Committer: Jian He <[email protected]> Committed: Tue Oct 28 18:02:13 2014 -0700 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 2 ++ .../webapp/CapacitySchedulerPage.java | 3 ++- .../server/resourcemanager/webapp/NodesPage.java | 2 ++ .../webapp/dao/CapacitySchedulerQueueInfo.java | 16 ++++++++++++++++ .../server/resourcemanager/webapp/dao/NodeInfo.java | 15 +++++++++++++++ .../resourcemanager/webapp/TestNodesPage.java | 2 +- .../webapp/TestRMWebServicesCapacitySched.java | 4 ++-- 7 files changed, 40 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/e181498a/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index cd702b7..bbf10ad 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -343,6 +343,8 @@ Release 2.6.0 - UNRELEASED YARN-2760. Remove 'experimental' from FairScheduler docs. (Harsh J via kasha) + YARN-2503. Added node lablels in web UI. (Wangda Tan via jianhe) + OPTIMIZATIONS BUG FIXES http://git-wip-us.apache.org/repos/asf/hadoop/blob/e181498a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/CapacitySchedulerPage.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/CapacitySchedulerPage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/CapacitySchedulerPage.java index a53ad98..d289f66 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/CapacitySchedulerPage.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/CapacitySchedulerPage.java @@ -120,7 +120,8 @@ class CapacitySchedulerPage extends RmView { _("Configured Max Capacity:", percent(lqinfo.getMaxCapacity() / 100)). _("Configured Minimum User Limit Percent:", Integer.toString(lqinfo.getUserLimit()) + "%"). _("Configured User Limit Factor:", String.format("%.1f", lqinfo.getUserLimitFactor())). - _r("Active users: ", activeUserList.toString()); + _("Active Users: ", activeUserList.toString()). + _r("Accessible Node Labels:", StringUtils.join(",", lqinfo.getNodeLabels())); html._(InfoBlock.class); http://git-wip-us.apache.org/repos/asf/hadoop/blob/e181498a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.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/NodesPage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.java index f10e255..270d915 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.java @@ -66,6 +66,7 @@ class NodesPage extends RmView { TBODY<TABLE<Hamlet>> tbody = html.table("#nodes"). thead(). tr(). + th(".nodelabels", "Node Labels"). th(".rack", "Rack"). th(".state", "Node State"). th(".nodeaddress", "Node Address"). @@ -113,6 +114,7 @@ class NodesPage extends RmView { int usedMemory = (int)info.getUsedMemory(); int availableMemory = (int)info.getAvailableMemory(); TR<TBODY<TABLE<Hamlet>>> row = tbody.tr(). + td(StringUtils.join(",", info.getNodeLabels())). td(info.getRack()). td(info.getState()). td(info.getNodeId()); http://git-wip-us.apache.org/repos/asf/hadoop/blob/e181498a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfo.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/dao/CapacitySchedulerQueueInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfo.java index d5c84d8..40dddea 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfo.java @@ -17,6 +17,10 @@ */ package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Set; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @@ -50,6 +54,7 @@ public class CapacitySchedulerQueueInfo { protected CapacitySchedulerQueueInfoList queues; protected ResourceInfo resourcesUsed; private boolean hideReservationQueues = false; + protected ArrayList<String> nodeLabels = new ArrayList<String>(); CapacitySchedulerQueueInfo() { }; @@ -75,6 +80,13 @@ public class CapacitySchedulerQueueInfo { !((PlanQueue)q).showReservationsAsQueues()) { hideReservationQueues = true; } + + // add labels + Set<String> labelSet = q.getAccessibleNodeLabels(); + if (labelSet != null) { + nodeLabels.addAll(labelSet); + Collections.sort(nodeLabels); + } } public float getCapacity() { @@ -138,4 +150,8 @@ public class CapacitySchedulerQueueInfo { static float cap(float val, float low, float hi) { return Math.min(Math.max(val, low), hi); } + + public ArrayList<String> getNodeLabels() { + return this.nodeLabels; + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/e181498a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodeInfo.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/dao/NodeInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodeInfo.java index 73a2db1..3104117 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodeInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodeInfo.java @@ -18,6 +18,10 @@ package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Set; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @@ -45,6 +49,7 @@ public class NodeInfo { protected long availMemoryMB; protected long usedVirtualCores; protected long availableVirtualCores; + protected ArrayList<String> nodeLabels = new ArrayList<String>(); public NodeInfo() { } // JAXB needs this @@ -70,6 +75,13 @@ public class NodeInfo { this.lastHealthUpdate = ni.getLastHealthReportTime(); this.healthReport = String.valueOf(ni.getHealthReport()); this.version = ni.getNodeManagerVersion(); + + // add labels + Set<String> labelSet = ni.getNodeLabels(); + if (labelSet != null) { + nodeLabels.addAll(labelSet); + Collections.sort(nodeLabels); + } } public String getRack() { @@ -124,4 +136,7 @@ public class NodeInfo { return this.availableVirtualCores; } + public ArrayList<String> getNodeLabels() { + return this.nodeLabels; + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/e181498a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java index 0974311..bb38079 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestNodesPage.java @@ -49,7 +49,7 @@ public class TestNodesPage { // Number of Actual Table Headers for NodesPage.NodesBlock might change in // future. In that case this value should be adjusted to the new value. final int numberOfThInMetricsTable = 16; - final int numberOfActualTableHeaders = 12; + final int numberOfActualTableHeaders = 13; private Injector injector; http://git-wip-us.apache.org/repos/asf/hadoop/blob/e181498a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java index e58c30f..3e62c3c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java @@ -357,10 +357,10 @@ public class TestRMWebServicesCapacitySched extends JerseyTest { private void verifySubQueue(JSONObject info, String q, float parentAbsCapacity, float parentAbsMaxCapacity) throws JSONException, Exception { - int numExpectedElements = 12; + int numExpectedElements = 13; boolean isParentQueue = true; if (!info.has("queues")) { - numExpectedElements = 22; + numExpectedElements = 23; isParentQueue = false; } assertEquals("incorrect number of elements", numExpectedElements, info.length());
