Author: tgraves Date: Tue Apr 3 20:43:08 2012 New Revision: 1309137 URL: http://svn.apache.org/viewvc?rev=1309137&view=rev Log: merge -r 1309133:1309134 from branch-2. FIXES: MAPREDUCE-4020
Added: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfoList.java - copied unchanged from r1309134, hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfoList.java Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/CapacitySchedulerPage.java hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/JAXBContextResolver.java hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerInfo.java hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfo.java hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-site/src/site/apt/ResourceManagerRest.apt.vm Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt?rev=1309137&r1=1309136&r2=1309137&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/CHANGES.txt Tue Apr 3 20:43:08 2012 @@ -39,6 +39,9 @@ Release 0.23.3 - UNRELEASED MAPREDUCE-3999. Tracking link gives an error if the AppMaster hasn't started yet (Ravi Prakash via bobby) + MAPREDUCE-4020. Web services returns incorrect JSON for deep queue tree + (Anupam Seth via tgraves) + Release 0.23.2 - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/CapacitySchedulerPage.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/CapacitySchedulerPage.java?rev=1309137&r1=1309136&r2=1309137&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/CapacitySchedulerPage.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/CapacitySchedulerPage.java Tue Apr 3 20:43:08 2012 @@ -100,8 +100,8 @@ class CapacitySchedulerPage extends RmVi @Override public void render(Block html) { ArrayList<CapacitySchedulerQueueInfo> subQueues = - (csqinfo.qinfo == null) ? csqinfo.csinfo.getSubQueues() - : csqinfo.qinfo.getSubQueues(); + (csqinfo.qinfo == null) ? csqinfo.csinfo.getQueues().getQueueInfoList() + : csqinfo.qinfo.getQueues().getQueueInfoList(); UL<Hamlet> ul = html.ul("#pq"); for (CapacitySchedulerQueueInfo info : subQueues) { float used = info.getUsedCapacity() / 100; @@ -122,7 +122,7 @@ class CapacitySchedulerPage extends RmVi _(join(percent(used), " used"))._(); csqinfo.qinfo = info; - if (info.getSubQueues() == null) { + if (info.getQueues() == null) { li.ul("#lq").li()._(LeafQueueInfoBlock.class)._()._(); } else { li._(QueueBlock.class); Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/JAXBContextResolver.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/JAXBContextResolver.java?rev=1309137&r1=1309136&r2=1309137&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/JAXBContextResolver.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/JAXBContextResolver.java Tue Apr 3 20:43:08 2012 @@ -34,6 +34,7 @@ import org.apache.hadoop.yarn.server.res import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppsInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.CapacitySchedulerInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.CapacitySchedulerQueueInfo; +import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.CapacitySchedulerQueueInfoList; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterMetricsInfo; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.FifoSchedulerInfo; @@ -57,7 +58,7 @@ public class JAXBContextResolver impleme SchedulerTypeInfo.class, NodeInfo.class, UserMetricsInfo.class, CapacitySchedulerInfo.class, ClusterMetricsInfo.class, SchedulerInfo.class, AppsInfo.class, NodesInfo.class, - RemoteExceptionData.class}; + RemoteExceptionData.class, CapacitySchedulerQueueInfoList.class}; public JAXBContextResolver() throws Exception { this.types = new HashSet<Class>(Arrays.asList(cTypes)); Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerInfo.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerInfo.java?rev=1309137&r1=1309136&r2=1309137&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerInfo.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerInfo.java Tue Apr 3 20:43:08 2012 @@ -18,8 +18,6 @@ package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao; -import java.util.ArrayList; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @@ -38,7 +36,7 @@ public class CapacitySchedulerInfo exten protected float usedCapacity; protected float maxCapacity; protected String queueName; - protected ArrayList<CapacitySchedulerQueueInfo> queues; + protected CapacitySchedulerQueueInfoList queues; @XmlTransient static final float EPSILON = 1e-8f; @@ -74,22 +72,22 @@ public class CapacitySchedulerInfo exten return this.queueName; } - public ArrayList<CapacitySchedulerQueueInfo> getSubQueues() { + public CapacitySchedulerQueueInfoList getQueues() { return this.queues; } - protected ArrayList<CapacitySchedulerQueueInfo> getQueues(CSQueue parent) { + protected CapacitySchedulerQueueInfoList getQueues(CSQueue parent) { CSQueue parentQueue = parent; - ArrayList<CapacitySchedulerQueueInfo> queuesInfo = new ArrayList<CapacitySchedulerQueueInfo>(); + CapacitySchedulerQueueInfoList queuesInfo = new CapacitySchedulerQueueInfoList(); for (CSQueue queue : parentQueue.getChildQueues()) { CapacitySchedulerQueueInfo info; if (queue instanceof LeafQueue) { info = new CapacitySchedulerLeafQueueInfo((LeafQueue)queue); } else { info = new CapacitySchedulerQueueInfo(queue); - info.subQueues = getQueues(queue); + info.queues = getQueues(queue); } - queuesInfo.add(info); + queuesInfo.addToQueueInfoList(info); } return queuesInfo; } Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfo.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfo.java?rev=1309137&r1=1309136&r2=1309137&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfo.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/CapacitySchedulerQueueInfo.java Tue Apr 3 20:43:08 2012 @@ -17,8 +17,6 @@ */ package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao; -import java.util.ArrayList; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @@ -49,7 +47,7 @@ public class CapacitySchedulerQueueInfo protected String usedResources; protected String queueName; protected QueueState state; - protected ArrayList<CapacitySchedulerQueueInfo> subQueues; + protected CapacitySchedulerQueueInfoList queues; CapacitySchedulerQueueInfo() { }; @@ -117,8 +115,8 @@ public class CapacitySchedulerQueueInfo return this.queuePath; } - public ArrayList<CapacitySchedulerQueueInfo> getSubQueues() { - return this.subQueues; + public CapacitySchedulerQueueInfoList getQueues() { + return this.queues; } /** Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java?rev=1309137&r1=1309136&r2=1309137&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java Tue Apr 3 20:43:08 2012 @@ -149,7 +149,12 @@ public class TestRMWebServicesCapacitySc conf.setUserLimitFactor(B2, 100.0f); conf.setCapacity(B3, 20); conf.setUserLimitFactor(B3, 100.0f); - + + conf.setQueues(A1, new String[] {"a1a", "a1b"}); + final String A1A = A1 + ".a1a"; + conf.setCapacity(A1A, 85); + final String A1B = A1 + ".a1b"; + conf.setCapacity(A1B, 15); } @Before @@ -230,12 +235,18 @@ public class TestRMWebServicesCapacitySc WebServicesTestUtils.getXmlFloat(element, "maxCapacity"), WebServicesTestUtils.getXmlString(element, "queueName")); - NodeList queues = element.getElementsByTagName("queues"); - for (int j = 0; j < queues.getLength(); j++) { - Element qElem = (Element) queues.item(j); - String qName = WebServicesTestUtils.getXmlString(qElem, "queueName"); - String q = CapacitySchedulerConfiguration.ROOT + "." + qName; - verifySubQueueXML(qElem, q, 100, 100); + NodeList children = element.getChildNodes(); + for (int j = 0; j < children.getLength(); j++) { + Element qElem = (Element) children.item(j); + if(qElem.getTagName().equals("queues")) { + NodeList qListInfos = qElem.getChildNodes(); + for (int k = 0; k < qListInfos.getLength(); k++) { + Element qElem2 = (Element) qListInfos.item(k); + String qName2 = WebServicesTestUtils.getXmlString(qElem2, "queueName"); + String q2 = CapacitySchedulerConfiguration.ROOT + "." + qName2; + verifySubQueueXML(qElem2, q2, 100, 100); + } + } } } } @@ -243,8 +254,18 @@ public class TestRMWebServicesCapacitySc public void verifySubQueueXML(Element qElem, String q, float parentAbsCapacity, float parentAbsMaxCapacity) throws Exception { - NodeList queues = qElem.getElementsByTagName("subQueues"); - QueueInfo qi = (queues != null) ? new QueueInfo() : new LeafQueueInfo(); + NodeList children = qElem.getChildNodes(); + boolean hasSubQueues = false; + for (int j = 0; j < children.getLength(); j++) { + Element qElem2 = (Element) children.item(j); + if(qElem2.getTagName().equals("queues")) { + NodeList qListInfos = qElem2.getChildNodes(); + if (qListInfos.getLength() > 0) { + hasSubQueues = true; + } + } + } + QueueInfo qi = (hasSubQueues) ? new QueueInfo() : new LeafQueueInfo(); qi.capacity = WebServicesTestUtils.getXmlFloat(qElem, "capacity"); qi.usedCapacity = WebServicesTestUtils.getXmlFloat(qElem, "usedCapacity"); @@ -261,14 +282,18 @@ public class TestRMWebServicesCapacitySc qi.queueName = WebServicesTestUtils.getXmlString(qElem, "queueName"); qi.state = WebServicesTestUtils.getXmlString(qElem, "state"); verifySubQueueGeneric(q, qi, parentAbsCapacity, parentAbsMaxCapacity); - - if (queues != null) { - for (int j = 0; j < queues.getLength(); j++) { - Element subqElem = (Element) queues.item(j); - String qName = WebServicesTestUtils.getXmlString(subqElem, "queueName"); - String q2 = q + "." + qName; - verifySubQueueXML(subqElem, q2, - qi.absoluteCapacity, qi.absoluteMaxCapacity); + if (hasSubQueues) { + for (int j = 0; j < children.getLength(); j++) { + Element qElem2 = (Element) children.item(j); + if(qElem2.getTagName().equals("queues")) { + NodeList qListInfos = qElem2.getChildNodes(); + for (int k = 0; k < qListInfos.getLength(); k++) { + Element qElem3 = (Element) qListInfos.item(k); + String qName3 = WebServicesTestUtils.getXmlString(qElem3, "queueName"); + String q3 = q + "." + qName3; + verifySubQueueXML(qElem3, q3, qi.absoluteCapacity, qi.absoluteMaxCapacity); + } + } } } else { LeafQueueInfo lqi = (LeafQueueInfo) qi; @@ -305,7 +330,7 @@ public class TestRMWebServicesCapacitySc (float) info.getDouble("capacity"), (float) info.getDouble("maxCapacity"), info.getString("queueName")); - JSONArray arr = info.getJSONArray("queues"); + JSONArray arr = info.getJSONObject("queues").getJSONArray("queue"); assertEquals("incorrect number of elements", 2, arr.length()); // test subqueues @@ -331,7 +356,7 @@ public class TestRMWebServicesCapacitySc throws JSONException, Exception { int numExpectedElements = 11; boolean isParentQueue = true; - if (!info.has("subQueues")) { + if (!info.has("queues")) { numExpectedElements = 20; isParentQueue = false; } @@ -352,7 +377,7 @@ public class TestRMWebServicesCapacitySc verifySubQueueGeneric(q, qi, parentAbsCapacity, parentAbsMaxCapacity); if (isParentQueue) { - JSONArray arr = info.getJSONArray("subQueues"); + JSONArray arr = info.getJSONObject("queues").getJSONArray("queue"); // test subqueues for (int i = 0; i < arr.length(); i++) { JSONObject obj = arr.getJSONObject(i); Modified: hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-site/src/site/apt/ResourceManagerRest.apt.vm URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-site/src/site/apt/ResourceManagerRest.apt.vm?rev=1309137&r1=1309136&r2=1309137&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-site/src/site/apt/ResourceManagerRest.apt.vm (original) +++ hadoop/common/branches/branch-0.23/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-site/src/site/apt/ResourceManagerRest.apt.vm Tue Apr 3 20:43:08 2012 @@ -324,7 +324,7 @@ ResourceManager REST API's. | queues | array of queues(JSON)/zero or more queue objects(XML) | A collection of queue resources| *---------------+--------------+-------------------------------+ -** Elements of the queues/subQueues object for a Parent queue +** Elements of the queues object for a Parent queue *---------------+--------------+-------------------------------+ || Item || Data Type || Description | @@ -349,10 +349,10 @@ ResourceManager REST API's. *---------------+--------------+-------------------------------+ | state | string of QueueState | The state of the queue | *---------------+--------------+-------------------------------+ -| subQueues | array of queues(JSON)/zero or more queue objects(XML) | A collection of sub-queue information| +| queues | array of queues(JSON)/zero or more queue objects(XML) | A collection of sub-queue information| *---------------+--------------+-------------------------------+ -** Elements of the queues/subQueues object for a Leaf queue - contains all elements in parent plus the following: +** Elements of the queues object for a Leaf queue - contains all elements in parent plus the following: *---------------+--------------+-------------------------------+ || Item || Data Type || Description | @@ -406,168 +406,190 @@ ResourceManager REST API's. "queueName" : "root", "maxCapacity" : 100, "type" : "capacityScheduler", - "queues" : [ - { - "numPendingApplications" : 0, - "queueName" : "default", - "userLimitFactor" : 1, - "maxApplications" : 7000, - "usedCapacity" : 0, - "numContainers" : 0, - "state" : "RUNNING", - "maxCapacity" : 90, - "numApplications" : 0, - "usedResources" : "memory: 0", - "absoluteMaxCapacity" : 90, - "maxActiveApplications" : 1, - "numActiveApplications" : 0, - "absoluteUsedCapacity" : 0, - "userLimit" : 100, - "absoluteCapacity" : 70, - "maxActiveApplicationsPerUser" : 1, - "capacity" : 70, - "type" : "capacitySchedulerLeafQueueInfo", - "maxApplicationsPerUser" : 7000 - }, - { - "queueName" : "test", - "absoluteUsedCapacity" : 0, - "absoluteCapacity" : 20, - "usedCapacity" : 0, - "capacity" : 20, - "subQueues" : [ - { - "numPendingApplications" : 0, - "queueName" : "a1", - "userLimitFactor" : 1, - "maxApplications" : 1200, - "usedCapacity" : 0, - "numContainers" : 0, - "state" : "RUNNING", - "maxCapacity" : 80, - "numApplications" : 0, - "usedResources" : "memory: 0", - "absoluteMaxCapacity" : 16.000002, - "maxActiveApplications" : 1, - "numActiveApplications" : 0, - "absoluteUsedCapacity" : 0, - "userLimit" : 100, - "absoluteCapacity" : 12, - "maxActiveApplicationsPerUser" : 1, - "capacity" : 60.000004, - "type" : "capacitySchedulerLeafQueueInfo", - "maxApplicationsPerUser" : 1200 + "queues" : { + "queue" : [ + { + "numPendingApplications" : 0, + "queueName" : "default", + "userLimitFactor" : 1, + "maxApplications" : 1, + "usedCapacity" : 0, + "numContainers" : 0, + "state" : "RUNNING", + "maxCapacity" : 90, + "numApplications" : 0, + "usedResources" : "memory: 0", + "absoluteMaxCapacity" : 90, + "maxActiveApplications" : 1, + "numActiveApplications" : 0, + "absoluteUsedCapacity" : 0, + "userLimit" : 100, + "absoluteCapacity" : 70, + "maxActiveApplicationsPerUser" : 1, + "capacity" : 70, + "type" : "capacitySchedulerLeafQueueInfo", + "maxApplicationsPerUser" : 1 + }, + { + "queueName" : "test", + "absoluteCapacity" : 20, + "usedCapacity" : 0, + "capacity" : 20, + "state" : "RUNNING", + "maxCapacity" : 100, + "numApplications" : 0, + "usedResources" : "memory: 0", + "absoluteMaxCapacity" : 100, + "queues" : { + "queue" : [ + { + "queueName" : "a1", + "absoluteCapacity" : 12, + "usedCapacity" : 0, + "capacity" : 60.000004, + "state" : "RUNNING", + "maxCapacity" : 100, + "numApplications" : 0, + "usedResources" : "memory: 0", + "absoluteMaxCapacity" : 100, + "queues" : { + "queue" : [ + { + "numPendingApplications" : 0, + "queueName" : "a11", + "userLimitFactor" : 1, + "maxApplications" : 0, + "usedCapacity" : 0, + "numContainers" : 0, + "state" : "RUNNING", + "maxCapacity" : 100, + "numApplications" : 0, + "usedResources" : "memory: 0", + "absoluteMaxCapacity" : 100, + "maxActiveApplications" : 1, + "numActiveApplications" : 0, + "absoluteUsedCapacity" : 0, + "userLimit" : 100, + "absoluteCapacity" : 10.200001, + "maxActiveApplicationsPerUser" : 1, + "capacity" : 85, + "type" : "capacitySchedulerLeafQueueInfo", + "maxApplicationsPerUser" : 0 + }, + { + "numPendingApplications" : 0, + "queueName" : "a12", + "userLimitFactor" : 1, + "maxApplications" : 0, + "usedCapacity" : 0, + "numContainers" : 0, + "state" : "RUNNING", + "maxCapacity" : 100, + "numApplications" : 0, + "usedResources" : "memory: 0", + "absoluteMaxCapacity" : 100, + "maxActiveApplications" : 1, + "numActiveApplications" : 0, + "absoluteUsedCapacity" : 0, + "userLimit" : 100, + "absoluteCapacity" : 1.8000001, + "maxActiveApplicationsPerUser" : 1, + "capacity" : 15.000001, + "type" : "capacitySchedulerLeafQueueInfo", + "maxApplicationsPerUser" : 0 + } + ] + }, + "absoluteUsedCapacity" : 0 + }, + { + "numPendingApplications" : 0, + "queueName" : "a2", + "userLimitFactor" : 1, + "maxApplications" : 0, + "usedCapacity" : 0, + "numContainers" : 0, + "state" : "RUNNING", + "maxCapacity" : 100, + "numApplications" : 0, + "usedResources" : "memory: 0", + "absoluteMaxCapacity" : 100, + "maxActiveApplications" : 1, + "numActiveApplications" : 0, + "absoluteUsedCapacity" : 0, + "userLimit" : 100, + "absoluteCapacity" : 8.000001, + "maxActiveApplicationsPerUser" : 1, + "capacity" : 40, + "type" : "capacitySchedulerLeafQueueInfo", + "maxApplicationsPerUser" : 0 + } + ] }, - { - "numPendingApplications" : 0, - "queueName" : "a2", - "userLimitFactor" : 1, - "maxApplications" : 800, - "usedCapacity" : 0, - "numContainers" : 0, - "state" : "RUNNING", - "maxCapacity" : 100, - "numApplications" : 0, - "usedResources" : "memory: 0", - "absoluteMaxCapacity" : 100, - "maxActiveApplications" : 1, - "numActiveApplications" : 0, - "absoluteUsedCapacity" : 0, - "userLimit" : 100, - "absoluteCapacity" : 8.000001, - "maxActiveApplicationsPerUser" : 1, - "capacity" : 40, - "type" : "capacitySchedulerLeafQueueInfo", - "maxApplicationsPerUser" : 800 - } - ], - "state" : "RUNNING", - "maxCapacity" : 80, - "numApplications" : 0, - "usedResources" : "memory: 0", - "absoluteMaxCapacity" : 80 - }, - { - "queueName" : "test2", - "absoluteUsedCapacity" : 0, - "absoluteCapacity" : 10, - "usedCapacity" : 0, - "capacity" : 10, - "subQueues" : [ - { - "numPendingApplications" : 0, - "queueName" : "a5", - "userLimitFactor" : 1, - "maxApplications" : 500, - "usedCapacity" : 0, - "numContainers" : 0, - "state" : "RUNNING", - "maxCapacity" : 100, - "numApplications" : 0, - "usedResources" : "memory: 0", - "absoluteMaxCapacity" : 100, - "maxActiveApplications" : 1, - "numActiveApplications" : 0, - "absoluteUsedCapacity" : 0, - "userLimit" : 100, - "absoluteCapacity" : 5, - "maxActiveApplicationsPerUser" : 1, - "capacity" : 50, - "type" : "capacitySchedulerLeafQueueInfo", - "maxApplicationsPerUser" : 500 + "absoluteUsedCapacity" : 0 + }, + { + "queueName" : "test2", + "absoluteCapacity" : 10, + "usedCapacity" : 0, + "capacity" : 10, + "state" : "RUNNING", + "maxCapacity" : 15.000001, + "numApplications" : 0, + "usedResources" : "memory: 0", + "absoluteMaxCapacity" : 15.000001, + "queues" : { + "queue" : [ + { + "numPendingApplications" : 0, + "queueName" : "a3", + "userLimitFactor" : 1, + "maxApplications" : 0, + "usedCapacity" : 0, + "numContainers" : 0, + "state" : "RUNNING", + "maxCapacity" : 100, + "numApplications" : 0, + "usedResources" : "memory: 0", + "absoluteMaxCapacity" : 15.000001, + "maxActiveApplications" : 1, + "numActiveApplications" : 0, + "absoluteUsedCapacity" : 0, + "userLimit" : 100, + "absoluteCapacity" : 9, + "maxActiveApplicationsPerUser" : 1, + "capacity" : 90, + "type" : "capacitySchedulerLeafQueueInfo", + "maxApplicationsPerUser" : 0 + }, + { + "numPendingApplications" : 0, + "queueName" : "a4", + "userLimitFactor" : 1, + "maxApplications" : 0, + "usedCapacity" : 0, + "numContainers" : 0, + "state" : "RUNNING", + "maxCapacity" : 100, + "numApplications" : 0, + "usedResources" : "memory: 0", + "absoluteMaxCapacity" : 15.000001, + "maxActiveApplications" : 1, + "numActiveApplications" : 0, + "absoluteUsedCapacity" : 0, + "userLimit" : 100, + "absoluteCapacity" : 1.0000001, + "maxActiveApplicationsPerUser" : 1, + "capacity" : 10, + "type" : "capacitySchedulerLeafQueueInfo", + "maxApplicationsPerUser" : 0 + } + ] }, - { - "numPendingApplications" : 0, - "queueName" : "a3", - "userLimitFactor" : 1, - "maxApplications" : 400, - "usedCapacity" : 0, - "numContainers" : 0, - "state" : "RUNNING", - "maxCapacity" : 100, - "numApplications" : 0, - "usedResources" : "memory: 0", - "absoluteMaxCapacity" : 100, - "maxActiveApplications" : 1, - "numActiveApplications" : 0, - "absoluteUsedCapacity" : 0, - "userLimit" : 100, - "absoluteCapacity" : 4.0000005, - "maxActiveApplicationsPerUser" : 1, - "capacity" : 40, - "type" : "capacitySchedulerLeafQueueInfo", - "maxApplicationsPerUser" : 400 - }, - { - "numPendingApplications" : 0, - "queueName" : "a4", - "userLimitFactor" : 1, - "maxApplications" : 100, - "usedCapacity" : 0, - "numContainers" : 0, - "state" : "RUNNING", - "maxCapacity" : 100, - "numApplications" : 0, - "usedResources" : "memory: 0", - "absoluteMaxCapacity" : 100, - "maxActiveApplications" : 1, - "numActiveApplications" : 0, - "absoluteUsedCapacity" : 0, - "userLimit" : 100, - "absoluteCapacity" : 1.0000001, - "maxActiveApplicationsPerUser" : 1, - "capacity" : 10, - "type" : "capacitySchedulerLeafQueueInfo", - "maxApplicationsPerUser" : 100 - } - ], - "state" : "RUNNING", - "maxCapacity" : 15.000001, - "numApplications" : 0, - "usedResources" : "memory: 0", - "absoluteMaxCapacity" : 15.000001 - } - ], + "absoluteUsedCapacity" : 0 + } + ] + }, "usedCapacity" : 0, "capacity" : 100 } @@ -575,7 +597,7 @@ ResourceManager REST API's. } +---+ - <<JSON response>> + <<XML response>> HTTP Request: @@ -603,155 +625,175 @@ ResourceManager REST API's. <usedCapacity>0.0</usedCapacity> <maxCapacity>100.0</maxCapacity> <queueName>root</queueName> - <queues xsi:type="capacitySchedulerLeafQueueInfo"> - <capacity>70.0</capacity> - <usedCapacity>0.0</usedCapacity> - <maxCapacity>90.0</maxCapacity> - <absoluteCapacity>70.0</absoluteCapacity> - <absoluteMaxCapacity>90.0</absoluteMaxCapacity> - <absoluteUsedCapacity>0.0</absoluteUsedCapacity> - <numApplications>0</numApplications> - <usedResources>memory: 0</usedResources> - <queueName>default</queueName> - <state>RUNNING</state> - <numActiveApplications>0</numActiveApplications> - <numPendingApplications>0</numPendingApplications> - <numContainers>0</numContainers> - <maxApplications>7000</maxApplications> - <maxApplicationsPerUser>7000</maxApplicationsPerUser> - <maxActiveApplications>1</maxActiveApplications> - <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> - <userLimit>100</userLimit> - <userLimitFactor>1.0</userLimitFactor> - </queues> <queues> - <capacity>20.0</capacity> - <usedCapacity>0.0</usedCapacity> - <maxCapacity>80.0</maxCapacity> - <absoluteCapacity>20.0</absoluteCapacity> - <absoluteMaxCapacity>80.0</absoluteMaxCapacity> - <absoluteUsedCapacity>0.0</absoluteUsedCapacity> - <numApplications>0</numApplications> - <usedResources>memory: 0</usedResources> - <queueName>test</queueName> - <state>RUNNING</state> - <subQueues xsi:type="capacitySchedulerLeafQueueInfo"> - <capacity>60.000004</capacity> + <queue xsi:type="capacitySchedulerLeafQueueInfo"> + <capacity>70.0</capacity> <usedCapacity>0.0</usedCapacity> - <maxCapacity>80.0</maxCapacity> - <absoluteCapacity>12.0</absoluteCapacity> - <absoluteMaxCapacity>16.000002</absoluteMaxCapacity> + <maxCapacity>90.0</maxCapacity> + <absoluteCapacity>70.0</absoluteCapacity> + <absoluteMaxCapacity>90.0</absoluteMaxCapacity> <absoluteUsedCapacity>0.0</absoluteUsedCapacity> <numApplications>0</numApplications> <usedResources>memory: 0</usedResources> - <queueName>a1</queueName> + <queueName>default</queueName> <state>RUNNING</state> <numActiveApplications>0</numActiveApplications> <numPendingApplications>0</numPendingApplications> <numContainers>0</numContainers> - <maxApplications>1200</maxApplications> - <maxApplicationsPerUser>1200</maxApplicationsPerUser> + <maxApplications>1</maxApplications> + <maxApplicationsPerUser>1</maxApplicationsPerUser> <maxActiveApplications>1</maxActiveApplications> <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> <userLimit>100</userLimit> <userLimitFactor>1.0</userLimitFactor> - </subQueues> - <subQueues xsi:type="capacitySchedulerLeafQueueInfo"> - <capacity>40.0</capacity> + </queue> + <queue> + <capacity>20.0</capacity> <usedCapacity>0.0</usedCapacity> <maxCapacity>100.0</maxCapacity> - <absoluteCapacity>8.000001</absoluteCapacity> + <absoluteCapacity>20.0</absoluteCapacity> <absoluteMaxCapacity>100.0</absoluteMaxCapacity> <absoluteUsedCapacity>0.0</absoluteUsedCapacity> <numApplications>0</numApplications> <usedResources>memory: 0</usedResources> - <queueName>a2</queueName> + <queueName>test</queueName> <state>RUNNING</state> - <numActiveApplications>0</numActiveApplications> - <numPendingApplications>0</numPendingApplications> - <numContainers>0</numContainers> - <maxApplications>800</maxApplications> - <maxApplicationsPerUser>800</maxApplicationsPerUser> - <maxActiveApplications>1</maxActiveApplications> - <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> - <userLimit>100</userLimit> - <userLimitFactor>1.0</userLimitFactor> - </subQueues> - </queues> - <queues> - <capacity>10.0</capacity> - <usedCapacity>0.0</usedCapacity> - <maxCapacity>15.000001</maxCapacity> - <absoluteCapacity>10.0</absoluteCapacity> - <absoluteMaxCapacity>15.000001</absoluteMaxCapacity> - <absoluteUsedCapacity>0.0</absoluteUsedCapacity> - <numApplications>0</numApplications> - <usedResources>memory: 0</usedResources> - <queueName>test2</queueName> - <state>RUNNING</state> - <subQueues xsi:type="capacitySchedulerLeafQueueInfo"> - <capacity>50.0</capacity> - <usedCapacity>0.0</usedCapacity> - <maxCapacity>100.0</maxCapacity> - <absoluteCapacity>5.0</absoluteCapacity> - <absoluteMaxCapacity>100.0</absoluteMaxCapacity> - <absoluteUsedCapacity>0.0</absoluteUsedCapacity> - <numApplications>0</numApplications> - <usedResources>memory: 0</usedResources> - <queueName>A4</queueName> - <state>RUNNING</state> - <numActiveApplications>0</numActiveApplications> - <numPendingApplications>0</numPendingApplications> - <numContainers>0</numContainers> - <maxApplications>500</maxApplications> - <maxApplicationsPerUser>500</maxApplicationsPerUser> - <maxActiveApplications>1</maxActiveApplications> - <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> - <userLimit>100</userLimit> - <userLimitFactor>1.0</userLimitFactor> - </subQueues> - <subQueues xsi:type="capacitySchedulerLeafQueueInfo"> - <capacity>40.0</capacity> - <usedCapacity>0.0</usedCapacity> - <maxCapacity>100.0</maxCapacity> - <absoluteCapacity>4.0000005</absoluteCapacity> - <absoluteMaxCapacity>100.0</absoluteMaxCapacity> - <absoluteUsedCapacity>0.0</absoluteUsedCapacity> - <numApplications>0</numApplications> - <usedResources>memory: 0</usedResources> - <queueName>a3</queueName> - <state>RUNNING</state> - <numActiveApplications>0</numActiveApplications> - <numPendingApplications>0</numPendingApplications> - <numContainers>0</numContainers> - <maxApplications>400</maxApplications> - <maxApplicationsPerUser>400</maxApplicationsPerUser> - <maxActiveApplications>1</maxActiveApplications> - <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> - <userLimit>100</userLimit> - <userLimitFactor>1.0</userLimitFactor> - </subQueues> - <subQueues xsi:type="capacitySchedulerLeafQueueInfo"> + <queues> + <queue> + <capacity>60.000004</capacity> + <usedCapacity>0.0</usedCapacity> + <maxCapacity>100.0</maxCapacity> + <absoluteCapacity>12.0</absoluteCapacity> + <absoluteMaxCapacity>100.0</absoluteMaxCapacity> + <absoluteUsedCapacity>0.0</absoluteUsedCapacity> + <numApplications>0</numApplications> + <usedResources>memory: 0</usedResources> + <queueName>a1</queueName> + <state>RUNNING</state> + <queues> + <queue xsi:type="capacitySchedulerLeafQueueInfo"> + <capacity>85.0</capacity> + <usedCapacity>0.0</usedCapacity> + <maxCapacity>100.0</maxCapacity> + <absoluteCapacity>10.200001</absoluteCapacity> + <absoluteMaxCapacity>100.0</absoluteMaxCapacity> + <absoluteUsedCapacity>0.0</absoluteUsedCapacity> + <numApplications>0</numApplications> + <usedResources>memory: 0</usedResources> + <queueName>a11</queueName> + <state>RUNNING</state> + <numActiveApplications>0</numActiveApplications> + <numPendingApplications>0</numPendingApplications> + <numContainers>0</numContainers> + <maxApplications>0</maxApplications> + <maxApplicationsPerUser>0</maxApplicationsPerUser> + <maxActiveApplications>1</maxActiveApplications> + <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> + <userLimit>100</userLimit> + <userLimitFactor>1.0</userLimitFactor> + </queue> + <queue xsi:type="capacitySchedulerLeafQueueInfo"> + <capacity>15.000001</capacity> + <usedCapacity>0.0</usedCapacity> + <maxCapacity>100.0</maxCapacity> + <absoluteCapacity>1.8000001</absoluteCapacity> + <absoluteMaxCapacity>100.0</absoluteMaxCapacity> + <absoluteUsedCapacity>0.0</absoluteUsedCapacity> + <numApplications>0</numApplications> + <usedResources>memory: 0</usedResources> + <queueName>a12</queueName> + <state>RUNNING</state> + <numActiveApplications>0</numActiveApplications> + <numPendingApplications>0</numPendingApplications> + <numContainers>0</numContainers> + <maxApplications>0</maxApplications> + <maxApplicationsPerUser>0</maxApplicationsPerUser> + <maxActiveApplications>1</maxActiveApplications> + <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> + <userLimit>100</userLimit> + <userLimitFactor>1.0</userLimitFactor> + </queue> + </queues> + </queue> + <queue xsi:type="capacitySchedulerLeafQueueInfo"> + <capacity>40.0</capacity> + <usedCapacity>0.0</usedCapacity> + <maxCapacity>100.0</maxCapacity> + <absoluteCapacity>8.000001</absoluteCapacity> + <absoluteMaxCapacity>100.0</absoluteMaxCapacity> + <absoluteUsedCapacity>0.0</absoluteUsedCapacity> + <numApplications>0</numApplications> + <usedResources>memory: 0</usedResources> + <queueName>a2</queueName> + <state>RUNNING</state> + <numActiveApplications>0</numActiveApplications> + <numPendingApplications>0</numPendingApplications> + <numContainers>0</numContainers> + <maxApplications>0</maxApplications> + <maxApplicationsPerUser>0</maxApplicationsPerUser> + <maxActiveApplications>1</maxActiveApplications> + <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> + <userLimit>100</userLimit> + <userLimitFactor>1.0</userLimitFactor> + </queue> + </queues> + </queue> + <queue> <capacity>10.0</capacity> <usedCapacity>0.0</usedCapacity> - <maxCapacity>100.0</maxCapacity> - <absoluteCapacity>1.0000001</absoluteCapacity> - <absoluteMaxCapacity>100.0</absoluteMaxCapacity> + <maxCapacity>15.000001</maxCapacity> + <absoluteCapacity>10.0</absoluteCapacity> + <absoluteMaxCapacity>15.000001</absoluteMaxCapacity> <absoluteUsedCapacity>0.0</absoluteUsedCapacity> <numApplications>0</numApplications> <usedResources>memory: 0</usedResources> - <queueName>a4</queueName> + <queueName>test2</queueName> <state>RUNNING</state> - <numActiveApplications>0</numActiveApplications> - <numPendingApplications>0</numPendingApplications> - <numContainers>0</numContainers> - <maxApplications>100</maxApplications> - <maxApplicationsPerUser>100</maxApplicationsPerUser> - <maxActiveApplications>1</maxActiveApplications> - <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> - <userLimit>100</userLimit> - <userLimitFactor>1.0</userLimitFactor> - </subQueues> + <queues> + <queue xsi:type="capacitySchedulerLeafQueueInfo"> + <capacity>90.0</capacity> + <usedCapacity>0.0</usedCapacity> + <maxCapacity>100.0</maxCapacity> + <absoluteCapacity>9.0</absoluteCapacity> + <absoluteMaxCapacity>15.000001</absoluteMaxCapacity> + <absoluteUsedCapacity>0.0</absoluteUsedCapacity> + <numApplications>0</numApplications> + <usedResources>memory: 0</usedResources> + <queueName>a3</queueName> + <state>RUNNING</state> + <numActiveApplications>0</numActiveApplications> + <numPendingApplications>0</numPendingApplications> + <numContainers>0</numContainers> + <maxApplications>0</maxApplications> + <maxApplicationsPerUser>0</maxApplicationsPerUser> + <maxActiveApplications>1</maxActiveApplications> + <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> + <userLimit>100</userLimit> + <userLimitFactor>1.0</userLimitFactor> + </queue> + <queue xsi:type="capacitySchedulerLeafQueueInfo"> + <capacity>10.0</capacity> + <usedCapacity>0.0</usedCapacity> + <maxCapacity>100.0</maxCapacity> + <absoluteCapacity>1.0000001</absoluteCapacity> + <absoluteMaxCapacity>15.000001</absoluteMaxCapacity> + <absoluteUsedCapacity>0.0</absoluteUsedCapacity> + <numApplications>0</numApplications> + <usedResources>memory: 0</usedResources> + <queueName>a4</queueName> + <state>RUNNING</state> + <numActiveApplications>0</numActiveApplications> + <numPendingApplications>0</numPendingApplications> + <numContainers>0</numContainers> + <maxApplications>0</maxApplications> + <maxApplicationsPerUser>0</maxApplicationsPerUser> + <maxActiveApplications>1</maxActiveApplications> + <maxActiveApplicationsPerUser>1</maxActiveApplicationsPerUser> + <userLimit>100</userLimit> + <userLimitFactor>1.0</userLimitFactor> + </queue> + </queues> + </queue> </queues> </schedulerInfo> </scheduler>