From f548bfffbdcd426811352d6920ee5fe50cd0182c Mon Sep 17 00:00:00 2001 From: Wangda Tan Date: Fri, 8 Dec 2017 15:10:47 -0800 Subject: [PATCH] YARN-7420. YARN UI changes to depict auto created queues. (Suma Shivaprasad via wangda) Change-Id: I8039d3772a191ddede132cd1f8b08a8ca2e275b7 --- .../webapp/CapacitySchedulerPage.java | 14 ++++++++++++-- .../webapp/dao/CapacitySchedulerLeafQueueInfo.java | 11 +++++++++++ .../webapp/dao/CapacitySchedulerQueueInfo.java | 4 ++++ 3 files changed, 27 insertions(+), 2 deletions(-) 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 4933d34abf..de85590b77 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 @@ -66,6 +66,7 @@ class CapacitySchedulerPage extends RmView { static final String Q_END = "left:101%"; static final String Q_GIVEN = "left:0%;background:none;border:1px dashed #BFBFBF"; + static final String Q_AUTO_CREATED = "background:#F4F0CB"; static final String Q_OVER = "background:#FFA333"; static final String Q_UNDER = "background:#5BD75B"; static final String ACTIVE_USER = "background:#FFFF00"; // Yellow highlight @@ -299,9 +300,16 @@ class CapacitySchedulerPage extends RmView { absMaxCap = partitionQueueCapsInfo.getAbsoluteMaxCapacity() / 100; absUsedCap = partitionQueueCapsInfo.getAbsoluteUsedCapacity() / 100; + boolean isAutoCreatedLeafQueue = info.isLeafQueue() ? + ((CapacitySchedulerLeafQueueInfo) info).isAutoCreatedLeafQueue() + : false; + + String Q_WIDTH = width(absMaxCap * Q_MAX_WIDTH); LI> li = ul. li(). - a(_Q).$style(width(absMaxCap * Q_MAX_WIDTH)). + a(_Q).$style(isAutoCreatedLeafQueue? join( Q_AUTO_CREATED, ";", + Q_WIDTH) + : Q_WIDTH). $title(join("Absolute Capacity:", percent(absCap))). span().$style(join(Q_GIVEN, ";font-size:1px;", width(absCap/absMaxCap))). __('.').__(). @@ -313,7 +321,7 @@ class CapacitySchedulerPage extends RmView { __(join(percent(used), " used")).__(); csqinfo.qinfo = info; - if (info.getQueues() == null) { + if (info.isLeafQueue()) { li.ul("#lq").li().__(LeafQueueInfoBlock.class).__().__(); li.ul("#lq").li().__(QueueUsersInfoBlock.class).__().__(); } else { @@ -422,6 +430,8 @@ class CapacitySchedulerPage extends RmView { __("Max Capacity").__(). span().$class("qlegend ui-corner-all").$style(ACTIVE_USER). __("Users Requesting Resources").__(). + span().$class("qlegend ui-corner-all").$style(Q_AUTO_CREATED). + __("Auto Created Queues").__(). __(); float used = 0; 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/CapacitySchedulerLeafQueueInfo.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/CapacitySchedulerLeafQueueInfo.java index 343c78e8ed..b5f4e795c3 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/CapacitySchedulerLeafQueueInfo.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/CapacitySchedulerLeafQueueInfo.java @@ -27,6 +27,8 @@ import javax.xml.bind.annotation.XmlTransient; import org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.QueueResourceQuotas; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceUsage; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity + .AutoCreatedLeafQueue; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.QueueCapacities; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.UserInfo; @@ -49,6 +51,7 @@ public class CapacitySchedulerLeafQueueInfo extends CapacitySchedulerQueueInfo { protected boolean preemptionDisabled; protected String defaultNodeLabelExpression; protected int defaultPriority; + protected boolean isAutoCreatedLeafQueue; @XmlTransient protected String orderingPolicyInfo; @@ -82,6 +85,10 @@ public class CapacitySchedulerLeafQueueInfo extends CapacitySchedulerQueueInfo { .getPartitionResourceUsageInfo(RMNodeLabelsManager.NO_LABEL) .getAMLimit(); } + + if ( q instanceof AutoCreatedLeafQueue) { + isAutoCreatedLeafQueue = true; + } } @Override @@ -155,4 +162,8 @@ public class CapacitySchedulerLeafQueueInfo extends CapacitySchedulerQueueInfo { public int getDefaultApplicationPriority() { return defaultPriority; } + + public boolean isAutoCreatedLeafQueue() { + return isAutoCreatedLeafQueue; + } } 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 d4de9aeff9..fd256b143b 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 @@ -219,4 +219,8 @@ public class CapacitySchedulerQueueInfo { public ResourceInfo getMaxEffectiveCapacity(){ return maxEffectiveCapacity; } + + public boolean isLeafQueue() { + return getQueues() == null; + } }