You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by vi...@apache.org on 2011/12/14 00:05:59 UTC
svn commit: r1213975 [5/6] - in
/hadoop/common/trunk/hadoop-mapreduce-project: ./ hadoop-mapreduce-client/
hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/client/
hadoop-mapreduce-client/hadoop-mapre...
Added: hadoop/common/trunk/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/trunk/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=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/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 (added)
+++ hadoop/common/trunk/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 Dec 13 23:05:56 2011
@@ -0,0 +1,107 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+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;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CSQueue;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue;
+
+@XmlRootElement(name = "capacityScheduler")
+@XmlType(name = "capacityScheduler")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class CapacitySchedulerInfo extends SchedulerInfo {
+
+ protected float capacity;
+ protected float usedCapacity;
+ protected float maxCapacity;
+ protected String queueName;
+ protected ArrayList<CapacitySchedulerQueueInfo> queues;
+
+ @XmlTransient
+ static final float EPSILON = 1e-8f;
+
+ public CapacitySchedulerInfo() {
+ } // JAXB needs this
+
+ public CapacitySchedulerInfo(CSQueue parent) {
+ this.queueName = parent.getQueueName();
+ this.usedCapacity = parent.getUsedCapacity() * 100;
+ this.capacity = parent.getCapacity() * 100;
+ float max = parent.getMaximumCapacity();
+ if (max < EPSILON || max > 1f)
+ max = 1f;
+ this.maxCapacity = max * 100;
+
+ queues = getQueues(parent);
+ }
+
+ public float getCapacity() {
+ return this.capacity;
+ }
+
+ public float getUsedCapacity() {
+ return this.usedCapacity;
+ }
+
+ public float getMaxCapacity() {
+ return this.maxCapacity;
+ }
+
+ public String getQueueName() {
+ return this.queueName;
+ }
+
+ public ArrayList<CapacitySchedulerQueueInfo> getSubQueues() {
+ return this.queues;
+ }
+
+ protected ArrayList<CapacitySchedulerQueueInfo> getQueues(CSQueue parent) {
+ CSQueue parentQueue = parent;
+ ArrayList<CapacitySchedulerQueueInfo> queuesInfo = new ArrayList<CapacitySchedulerQueueInfo>();
+ for (CSQueue queue : parentQueue.getChildQueues()) {
+ float usedCapacity = queue.getUsedCapacity() * 100;
+ float capacity = queue.getCapacity() * 100;
+ String queueName = queue.getQueueName();
+ String queuePath = queue.getQueuePath();
+ float max = queue.getMaximumCapacity();
+ if (max < EPSILON || max > 1f)
+ max = 1f;
+ float maxCapacity = max * 100;
+ String state = queue.getState().toString();
+ CapacitySchedulerQueueInfo info = new CapacitySchedulerQueueInfo(
+ capacity, usedCapacity, maxCapacity, queueName, state, queuePath);
+
+ if (queue instanceof ParentQueue) {
+ info.isParent = true;
+ info.queue = queue;
+ info.subQueues = getQueues(queue);
+ }
+ queuesInfo.add(info);
+ }
+ return queuesInfo;
+ }
+
+}
Added: hadoop/common/trunk/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/trunk/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=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/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 (added)
+++ hadoop/common/trunk/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 Dec 13 23:05:56 2011
@@ -0,0 +1,98 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CSQueue;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class CapacitySchedulerQueueInfo {
+
+ @XmlTransient
+ protected String queuePath;
+ @XmlTransient
+ protected Boolean isParent = false;
+
+ // bit odd to store this but makes html easier for now
+ @XmlTransient
+ protected CSQueue queue;
+
+ protected float capacity;
+ protected float usedCapacity;
+ protected float maxCapacity;
+ protected String queueName;
+ protected String state;
+ protected ArrayList<CapacitySchedulerQueueInfo> subQueues;
+
+ CapacitySchedulerQueueInfo() {
+ };
+
+ CapacitySchedulerQueueInfo(float cap, float used, float max, String name,
+ String state, String path) {
+ this.capacity = cap;
+ this.usedCapacity = used;
+ this.maxCapacity = max;
+ this.queueName = name;
+ this.state = state;
+ this.queuePath = path;
+ }
+
+ public Boolean isParent() {
+ return this.isParent;
+ }
+
+ public CSQueue getQueue() {
+ return this.queue;
+ }
+
+ public float getCapacity() {
+ return this.capacity;
+ }
+
+ public float getUsedCapacity() {
+ return this.usedCapacity;
+ }
+
+ public float getMaxCapacity() {
+ return this.maxCapacity;
+ }
+
+ public String getQueueName() {
+ return this.queueName;
+ }
+
+ public String getQueueState() {
+ return this.state;
+ }
+
+ public String getQueuePath() {
+ return this.queuePath;
+ }
+
+ public ArrayList<CapacitySchedulerQueueInfo> getSubQueues() {
+ return this.subQueues;
+ }
+
+}
Added: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterInfo.java?rev=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterInfo.java (added)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterInfo.java Tue Dec 13 23:05:56 2011
@@ -0,0 +1,95 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.hadoop.util.VersionInfo;
+import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
+import org.apache.hadoop.yarn.util.YarnVersionInfo;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ClusterInfo {
+
+ protected long id;
+ protected long startedOn;
+ protected String state;
+ protected String resourceManagerVersion;
+ protected String resourceManagerBuildVersion;
+ protected String resourceManagerVersionBuiltOn;
+ protected String hadoopVersion;
+ protected String hadoopBuildVersion;
+ protected String hadoopVersionBuiltOn;
+
+ public ClusterInfo() {
+ } // JAXB needs this
+
+ public ClusterInfo(ResourceManager rm) {
+ long ts = ResourceManager.clusterTimeStamp;
+
+ this.id = ts;
+ this.state = rm.getServiceState().toString();
+ this.startedOn = ts;
+ this.resourceManagerVersion = YarnVersionInfo.getVersion();
+ this.resourceManagerBuildVersion = YarnVersionInfo.getBuildVersion();
+ this.resourceManagerVersionBuiltOn = YarnVersionInfo.getDate();
+ this.hadoopVersion = VersionInfo.getVersion();
+ this.hadoopBuildVersion = VersionInfo.getBuildVersion();
+ this.hadoopVersionBuiltOn = VersionInfo.getDate();
+ }
+
+ public String getState() {
+ return this.state;
+ }
+
+ public String getRMVersion() {
+ return this.resourceManagerVersion;
+ }
+
+ public String getRMBuildVersion() {
+ return this.resourceManagerBuildVersion;
+ }
+
+ public String getRMVersionBuiltOn() {
+ return this.resourceManagerVersionBuiltOn;
+ }
+
+ public String getHadoopVersion() {
+ return this.hadoopVersion;
+ }
+
+ public String getHadoopBuildVersion() {
+ return this.hadoopBuildVersion;
+ }
+
+ public String getHadoopVersionBuiltOn() {
+ return this.hadoopVersionBuiltOn;
+ }
+
+ public long getClusterId() {
+ return this.id;
+ }
+
+ public long getStartedOn() {
+ return this.startedOn;
+ }
+
+}
Added: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java?rev=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java (added)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java Tue Dec 13 23:05:56 2011
@@ -0,0 +1,114 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.hadoop.yarn.server.resourcemanager.ClusterMetrics;
+import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
+import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.QueueMetrics;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
+
+@XmlRootElement(name = "clusterMetrics")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ClusterMetricsInfo {
+
+ private static final long MB_IN_GB = 1024;
+
+ protected int appsSubmitted;
+ protected long reservedMB;
+ protected long availableMB;
+ protected long allocatedMB;
+ protected int containersAllocated;
+ protected long totalMB;
+ protected int totalNodes;
+ protected int lostNodes;
+ protected int unhealthyNodes;
+ protected int decommissionedNodes;
+ protected int rebootedNodes;
+
+ public ClusterMetricsInfo() {
+ } // JAXB needs this
+
+ public ClusterMetricsInfo(final ResourceManager rm, final RMContext rmContext) {
+ ResourceScheduler rs = rm.getResourceScheduler();
+ QueueMetrics metrics = rs.getRootQueueMetrics();
+ ClusterMetrics clusterMetrics = ClusterMetrics.getMetrics();
+
+ this.appsSubmitted = metrics.getAppsSubmitted();
+ this.reservedMB = metrics.getReservedGB() * MB_IN_GB;
+ this.availableMB = metrics.getAvailableGB() * MB_IN_GB;
+ this.allocatedMB = metrics.getAllocatedGB() * MB_IN_GB;
+ this.containersAllocated = metrics.getAllocatedContainers();
+ this.totalMB = availableMB + reservedMB + allocatedMB;
+ this.totalNodes = clusterMetrics.getNumNMs();
+ this.lostNodes = clusterMetrics.getNumLostNMs();
+ this.unhealthyNodes = clusterMetrics.getUnhealthyNMs();
+ this.decommissionedNodes = clusterMetrics.getNumDecommisionedNMs();
+ this.rebootedNodes = clusterMetrics.getNumRebootedNMs();
+
+ }
+
+ public int getAppsSubmitted() {
+ return this.appsSubmitted;
+ }
+
+ public long getReservedMB() {
+ return this.reservedMB;
+ }
+
+ public long getAvailableMB() {
+ return this.availableMB;
+ }
+
+ public long getAllocatedMB() {
+ return this.allocatedMB;
+ }
+
+ public int getContainersAllocated() {
+ return this.containersAllocated;
+ }
+
+ public long getTotalMB() {
+ return this.totalMB;
+ }
+
+ public int getTotalNodes() {
+ return this.totalNodes;
+ }
+
+ public int getLostNodes() {
+ return this.lostNodes;
+ }
+
+ public int getRebootedNodes() {
+ return this.rebootedNodes;
+ }
+
+ public int getUnhealthyNodes() {
+ return this.unhealthyNodes;
+ }
+
+ public int getDecommissionedNodes() {
+ return this.decommissionedNodes;
+ }
+
+}
Added: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/FifoSchedulerInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/FifoSchedulerInfo.java?rev=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/FifoSchedulerInfo.java (added)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/FifoSchedulerInfo.java Tue Dec 13 23:05:56 2011
@@ -0,0 +1,133 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.hadoop.yarn.api.records.QueueInfo;
+import org.apache.hadoop.yarn.api.records.QueueState;
+import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
+import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
+import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNodeReport;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler;
+
+@XmlRootElement(name = "fifoScheduler")
+@XmlType(name = "fifoScheduler")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class FifoSchedulerInfo extends SchedulerInfo {
+
+ protected float capacity;
+ protected float usedCapacity;
+ protected QueueState qstate;
+ protected int minQueueMemoryCapacity;
+ protected int maxQueueMemoryCapacity;
+ protected int numNodes;
+ protected int usedNodeCapacity;
+ protected int availNodeCapacity;
+ protected int totalNodeCapacity;
+ protected int numContainers;
+
+ @XmlTransient
+ protected String qstateFormatted;
+
+ @XmlTransient
+ protected String qName;
+
+ public FifoSchedulerInfo() {
+ } // JAXB needs this
+
+ public FifoSchedulerInfo(final ResourceManager rm) {
+
+ RMContext rmContext = rm.getRMContext();
+
+ FifoScheduler fs = (FifoScheduler) rm.getResourceScheduler();
+ qName = fs.getQueueInfo("", false, false).getQueueName();
+ QueueInfo qInfo = fs.getQueueInfo(qName, true, true);
+
+ this.usedCapacity = qInfo.getCurrentCapacity();
+ this.capacity = qInfo.getCapacity();
+ this.minQueueMemoryCapacity = fs.getMinimumResourceCapability().getMemory();
+ this.maxQueueMemoryCapacity = fs.getMaximumResourceCapability().getMemory();
+ this.qstate = qInfo.getQueueState();
+
+ this.numNodes = rmContext.getRMNodes().size();
+ this.usedNodeCapacity = 0;
+ this.availNodeCapacity = 0;
+ this.totalNodeCapacity = 0;
+ this.numContainers = 0;
+
+ for (RMNode ni : rmContext.getRMNodes().values()) {
+ SchedulerNodeReport report = fs.getNodeReport(ni.getNodeID());
+ this.usedNodeCapacity += report.getUsedResource().getMemory();
+ this.availNodeCapacity += report.getAvailableResource().getMemory();
+ this.totalNodeCapacity += ni.getTotalCapability().getMemory();
+ this.numContainers += fs.getNodeReport(ni.getNodeID()).getNumContainers();
+ }
+ }
+
+ public int getNumNodes() {
+ return this.numNodes;
+ }
+
+ public int getUsedNodeCapacity() {
+ return this.usedNodeCapacity;
+ }
+
+ public int getAvailNodeCapacity() {
+ return this.availNodeCapacity;
+ }
+
+ public int getTotalNodeCapacity() {
+ return this.totalNodeCapacity;
+ }
+
+ public int getNumContainers() {
+ return this.numContainers;
+ }
+
+ public String getState() {
+ return this.qstate.toString();
+ }
+
+ public String getQueueName() {
+ return this.qName;
+ }
+
+ public int getMinQueueMemoryCapacity() {
+ return this.minQueueMemoryCapacity;
+ }
+
+ public int getMaxQueueMemoryCapacity() {
+ return this.maxQueueMemoryCapacity;
+ }
+
+ public float getCapacity() {
+ return this.capacity;
+ }
+
+ public float getUsedCapacity() {
+ return this.usedCapacity;
+ }
+
+}
Added: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodeInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodeInfo.java?rev=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodeInfo.java (added)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodeInfo.java Tue Dec 13 23:05:56 2011
@@ -0,0 +1,122 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.hadoop.yarn.api.records.NodeHealthStatus;
+import org.apache.hadoop.yarn.api.records.NodeId;
+import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode;
+import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeState;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNodeReport;
+
+@XmlRootElement(name = "node")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class NodeInfo {
+
+ protected String rack;
+ protected RMNodeState state;
+ protected String id;
+ protected String nodeHostName;
+ protected String nodeHTTPAddress;
+ protected String healthStatus;
+ protected long lastHealthUpdate;
+ protected String healthReport;
+ protected int numContainers;
+ protected long usedMemoryMB;
+ protected long availMemoryMB;
+
+ @XmlTransient
+ protected boolean healthy;
+
+ public NodeInfo() {
+ } // JAXB needs this
+
+ public NodeInfo(RMNode ni, ResourceScheduler sched) {
+ NodeId id = ni.getNodeID();
+ SchedulerNodeReport report = sched.getNodeReport(id);
+ NodeHealthStatus health = ni.getNodeHealthStatus();
+ this.numContainers = 0;
+ this.usedMemoryMB = 0;
+ this.availMemoryMB = 0;
+ if (report != null) {
+ this.numContainers = report.getNumContainers();
+ this.usedMemoryMB = report.getUsedResource().getMemory();
+ this.availMemoryMB = report.getAvailableResource().getMemory();
+ }
+ this.id = id.toString();
+ this.rack = ni.getRackName();
+ this.nodeHostName = ni.getHostName();
+ this.state = ni.getState();
+ this.nodeHTTPAddress = ni.getHttpAddress();
+ this.healthy = health.getIsNodeHealthy();
+ this.healthStatus = health.getIsNodeHealthy() ? "Healthy" : "Unhealthy";
+ this.lastHealthUpdate = health.getLastHealthReportTime();
+ this.healthReport = String.valueOf(health.getHealthReport());
+ }
+
+ public boolean isHealthy() {
+ return this.healthy;
+ }
+
+ public String getRack() {
+ return this.rack;
+ }
+
+ public String getState() {
+ return String.valueOf(this.state);
+ }
+
+ public String getNodeId() {
+ return this.id;
+ }
+
+ public String getNodeHTTPAddress() {
+ return this.nodeHTTPAddress;
+ }
+
+ public String getHealthStatus() {
+ return this.healthStatus;
+ }
+
+ public long getLastHealthUpdate() {
+ return this.lastHealthUpdate;
+ }
+
+ public String getHealthReport() {
+ return this.healthReport;
+ }
+
+ public int getNumContainers() {
+ return this.numContainers;
+ }
+
+ public long getUsedMemory() {
+ return this.usedMemoryMB;
+ }
+
+ public long getAvailableMemory() {
+ return this.availMemoryMB;
+ }
+
+}
Added: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodesInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodesInfo.java?rev=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodesInfo.java (added)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/NodesInfo.java Tue Dec 13 23:05:56 2011
@@ -0,0 +1,39 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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;
+
+@XmlRootElement(name = "nodes")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class NodesInfo {
+
+ protected ArrayList<NodeInfo> node = new ArrayList<NodeInfo>();
+
+ public NodesInfo() {
+ } // JAXB needs this
+
+ public void add(NodeInfo nodeinfo) {
+ node.add(nodeinfo);
+ }
+
+}
Added: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedulerInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedulerInfo.java?rev=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedulerInfo.java (added)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedulerInfo.java Tue Dec 13 23:05:56 2011
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+@XmlRootElement
+@XmlSeeAlso({ CapacitySchedulerInfo.class, FifoSchedulerInfo.class })
+public class SchedulerInfo {
+
+ public SchedulerInfo() {
+ } // JAXB needs this
+
+}
Added: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedulerTypeInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedulerTypeInfo.java?rev=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedulerTypeInfo.java (added)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedulerTypeInfo.java Tue Dec 13 23:05:56 2011
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "scheduler")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SchedulerTypeInfo {
+ protected SchedulerInfo schedulerInfo;
+
+ public SchedulerTypeInfo() {
+ } // JAXB needs this
+
+ public SchedulerTypeInfo(final SchedulerInfo scheduler) {
+ this.schedulerInfo = scheduler;
+ }
+
+}
Added: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/UserMetricsInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/UserMetricsInfo.java?rev=1213975&view=auto
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/UserMetricsInfo.java (added)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/UserMetricsInfo.java Tue Dec 13 23:05:56 2011
@@ -0,0 +1,100 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
+import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.QueueMetrics;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
+
+@XmlRootElement(name = "userMetrics")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class UserMetricsInfo {
+
+ private static final long MB_IN_GB = 1024;
+
+ protected int appsSubmitted;
+ protected int runningContainers;
+ protected int pendingContainers;
+ protected int reservedContainers;
+ protected long reservedMB;
+ protected long pendingMB;
+ protected long allocatedMB;
+
+ @XmlTransient
+ protected boolean userMetricsAvailable;
+
+ public UserMetricsInfo() {
+ } // JAXB needs this
+
+ public UserMetricsInfo(final ResourceManager rm, final RMContext rmContext,
+ final String user) {
+ ResourceScheduler rs = rm.getResourceScheduler();
+ QueueMetrics metrics = rs.getRootQueueMetrics();
+ QueueMetrics userMetrics = metrics.getUserMetrics(user);
+ this.userMetricsAvailable = false;
+
+ if (userMetrics != null) {
+ this.userMetricsAvailable = true;
+ this.appsSubmitted = userMetrics.getAppsSubmitted();
+ this.runningContainers = userMetrics.getAllocatedContainers();
+ this.pendingContainers = userMetrics.getPendingContainers();
+ this.reservedContainers = userMetrics.getReservedContainers();
+ this.reservedMB = userMetrics.getReservedGB() * MB_IN_GB;
+ this.pendingMB = userMetrics.getPendingGB() * MB_IN_GB;
+ this.allocatedMB = userMetrics.getAllocatedGB() * MB_IN_GB;
+ }
+ }
+
+ public boolean metricsAvailable() {
+ return userMetricsAvailable;
+ }
+
+ public int getAppsSubmitted() {
+ return this.appsSubmitted;
+ }
+
+ public long getReservedMB() {
+ return this.reservedMB;
+ }
+
+ public long getAllocatedMB() {
+ return this.allocatedMB;
+ }
+
+ public long getPendingMB() {
+ return this.pendingMB;
+ }
+
+ public int getReservedContainers() {
+ return this.reservedContainers;
+ }
+
+ public int getRunningContainers() {
+ return this.runningContainers;
+ }
+
+ public int getPendingContainers() {
+ return this.pendingContainers;
+ }
+}
Modified: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java?rev=1213975&r1=1213974&r2=1213975&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java (original)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockRM.java Tue Dec 13 23:05:56 2011
@@ -30,7 +30,9 @@ import org.apache.hadoop.yarn.api.record
import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
+import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource;
+import org.apache.hadoop.yarn.event.Dispatcher;
import org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncherEvent;
import org.apache.hadoop.yarn.server.resourcemanager.amlauncher.ApplicationMasterLauncher;
import org.apache.hadoop.yarn.server.resourcemanager.recovery.StoreFactory;
@@ -40,12 +42,16 @@ import org.apache.hadoop.yarn.server.res
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEventType;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptLaunchFailedEvent;
+import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode;
+import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeEvent;
+import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeEventType;
+import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeImpl;
+import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeState;
import org.apache.hadoop.yarn.util.Records;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
-
public class MockRM extends ResourceManager {
public MockRM() {
@@ -59,48 +65,50 @@ public class MockRM extends ResourceMana
rootLogger.setLevel(Level.DEBUG);
}
- public void waitForState(ApplicationId appId, RMAppState finalState)
+ public void waitForState(ApplicationId appId, RMAppState finalState)
throws Exception {
RMApp app = getRMContext().getRMApps().get(appId);
Assert.assertNotNull("app shouldn't be null", app);
int timeoutSecs = 0;
- while (!finalState.equals(app.getState()) &&
- timeoutSecs++ < 20) {
- System.out.println("App State is : " + app.getState() +
- " Waiting for state : " + finalState);
+ while (!finalState.equals(app.getState()) && timeoutSecs++ < 20) {
+ System.out.println("App State is : " + app.getState()
+ + " Waiting for state : " + finalState);
Thread.sleep(500);
}
System.out.println("App State is : " + app.getState());
- Assert.assertEquals("App state is not correct (timedout)",
- finalState, app.getState());
+ Assert.assertEquals("App state is not correct (timedout)", finalState,
+ app.getState());
}
-
- // get new application id
+
+ // get new application id
public GetNewApplicationResponse getNewAppId() throws Exception {
ClientRMProtocol client = getClientRMService();
- return client.getNewApplication(Records.newRecord(GetNewApplicationRequest.class));
+ return client.getNewApplication(Records
+ .newRecord(GetNewApplicationRequest.class));
}
- //client
+ // client
public RMApp submitApp(int masterMemory) throws Exception {
ClientRMProtocol client = getClientRMService();
- GetNewApplicationResponse resp = client.getNewApplication(Records.newRecord(GetNewApplicationRequest.class));
+ GetNewApplicationResponse resp = client.getNewApplication(Records
+ .newRecord(GetNewApplicationRequest.class));
ApplicationId appId = resp.getApplicationId();
-
- SubmitApplicationRequest req = Records.newRecord(SubmitApplicationRequest.class);
- ApplicationSubmissionContext sub =
- Records.newRecord(ApplicationSubmissionContext.class);
+
+ SubmitApplicationRequest req = Records
+ .newRecord(SubmitApplicationRequest.class);
+ ApplicationSubmissionContext sub = Records
+ .newRecord(ApplicationSubmissionContext.class);
sub.setApplicationId(appId);
sub.setApplicationName("");
sub.setUser("");
- ContainerLaunchContext clc =
- Records.newRecord(ContainerLaunchContext.class);
- Resource capability = Records.newRecord(Resource.class);
+ ContainerLaunchContext clc = Records
+ .newRecord(ContainerLaunchContext.class);
+ Resource capability = Records.newRecord(Resource.class);
capability.setMemory(masterMemory);
clc.setResource(capability);
sub.setAMContainerSpec(clc);
req.setApplicationSubmissionContext(sub);
-
+
client.submitApplication(req);
// make sure app is immediately available after submit
waitForState(appId, RMAppState.ACCEPTED);
@@ -113,28 +121,54 @@ public class MockRM extends ResourceMana
return nm;
}
+ public void sendNodeStarted(MockNM nm) throws Exception {
+ RMNodeImpl node = (RMNodeImpl) getRMContext().getRMNodes().get(
+ nm.getNodeId());
+ node.handle(new RMNodeEvent(nm.getNodeId(), RMNodeEventType.STARTED));
+ }
+
+ public void NMwaitForState(NodeId nodeid, RMNodeState finalState)
+ throws Exception {
+ RMNode node = getRMContext().getRMNodes().get(nodeid);
+ Assert.assertNotNull("node shouldn't be null", node);
+ int timeoutSecs = 0;
+ while (!finalState.equals(node.getState()) && timeoutSecs++ < 20) {
+ System.out.println("Node State is : " + node.getState()
+ + " Waiting for state : " + finalState);
+ Thread.sleep(500);
+ }
+ System.out.println("Node State is : " + node.getState());
+ Assert.assertEquals("Node state is not correct (timedout)", finalState,
+ node.getState());
+ }
+
public void killApp(ApplicationId appId) throws Exception {
ClientRMProtocol client = getClientRMService();
- KillApplicationRequest req = Records.newRecord(KillApplicationRequest.class);
+ KillApplicationRequest req = Records
+ .newRecord(KillApplicationRequest.class);
req.setApplicationId(appId);
client.forceKillApplication(req);
}
- //from AMLauncher
- public MockAM sendAMLaunched(ApplicationAttemptId appAttemptId) throws Exception {
+ // from AMLauncher
+ public MockAM sendAMLaunched(ApplicationAttemptId appAttemptId)
+ throws Exception {
MockAM am = new MockAM(getRMContext(), masterService, appAttemptId);
am.waitForState(RMAppAttemptState.ALLOCATED);
- getRMContext().getDispatcher().getEventHandler().handle(
- new RMAppAttemptEvent(appAttemptId, RMAppAttemptEventType.LAUNCHED));
+ getRMContext()
+ .getDispatcher()
+ .getEventHandler()
+ .handle(
+ new RMAppAttemptEvent(appAttemptId, RMAppAttemptEventType.LAUNCHED));
return am;
}
-
- public void sendAMLaunchFailed(ApplicationAttemptId appAttemptId) throws Exception {
+ public void sendAMLaunchFailed(ApplicationAttemptId appAttemptId)
+ throws Exception {
MockAM am = new MockAM(getRMContext(), masterService, appAttemptId);
am.waitForState(RMAppAttemptState.ALLOCATED);
- getRMContext().getDispatcher().getEventHandler().handle(
- new RMAppAttemptLaunchFailedEvent(appAttemptId, "Failed"));
+ getRMContext().getDispatcher().getEventHandler()
+ .handle(new RMAppAttemptLaunchFailedEvent(appAttemptId, "Failed"));
}
@Override
@@ -143,8 +177,9 @@ public class MockRM extends ResourceMana
rmAppManager, applicationACLsManager) {
@Override
public void start() {
- //override to not start rpc handler
+ // override to not start rpc handler
}
+
@Override
public void stop() {
// don't do anything
@@ -155,11 +190,12 @@ public class MockRM extends ResourceMana
@Override
protected ResourceTrackerService createResourceTrackerService() {
return new ResourceTrackerService(getRMContext(), nodesListManager,
- this.nmLivelinessMonitor, this.containerTokenSecretManager){
+ this.nmLivelinessMonitor, this.containerTokenSecretManager) {
@Override
public void start() {
- //override to not start rpc handler
+ // override to not start rpc handler
}
+
@Override
public void stop() {
// don't do anything
@@ -173,8 +209,9 @@ public class MockRM extends ResourceMana
this.appTokenSecretManager, scheduler) {
@Override
public void start() {
- //override to not start rpc handler
+ // override to not start rpc handler
}
+
@Override
public void stop() {
// don't do anything
@@ -184,17 +221,18 @@ public class MockRM extends ResourceMana
@Override
protected ApplicationMasterLauncher createAMLauncher() {
- return new ApplicationMasterLauncher(
- this.appTokenSecretManager, this.clientToAMSecretManager,
- getRMContext()) {
+ return new ApplicationMasterLauncher(this.appTokenSecretManager,
+ this.clientToAMSecretManager, getRMContext()) {
@Override
public void start() {
- //override to not start rpc handler
+ // override to not start rpc handler
}
+
@Override
- public void handle(AMLauncherEvent appEvent) {
- //don't do anything
+ public void handle(AMLauncherEvent appEvent) {
+ // don't do anything
}
+
@Override
public void stop() {
// don't do anything
@@ -203,31 +241,31 @@ public class MockRM extends ResourceMana
}
@Override
- protected AdminService createAdminService(
- ClientRMService clientRMService,
+ protected AdminService createAdminService(ClientRMService clientRMService,
ApplicationMasterService applicationMasterService,
ResourceTrackerService resourceTrackerService) {
- return new AdminService(
- getConfig(), scheduler, getRMContext(), this.nodesListManager,
- clientRMService, applicationMasterService, resourceTrackerService){
+ return new AdminService(getConfig(), scheduler, getRMContext(),
+ this.nodesListManager, clientRMService, applicationMasterService,
+ resourceTrackerService) {
@Override
public void start() {
- //override to not start rpc handler
+ // override to not start rpc handler
}
+
@Override
public void stop() {
// don't do anything
}
};
}
-
+
public NodesListManager getNodesListManager() {
return this.nodesListManager;
}
@Override
protected void startWepApp() {
- //override to disable webapp
+ // override to disable webapp
}
}
Modified: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/MockAsm.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/MockAsm.java?rev=1213975&r1=1213974&r2=1213975&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/MockAsm.java (original)
+++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/MockAsm.java Tue Dec 13 23:05:56 2011
@@ -284,6 +284,11 @@ public abstract class MockAsm extends Mo
public FinalApplicationStatus getFinalApplicationStatus() {
return FinalApplicationStatus.UNDEFINED;
}
+
+ @Override
+ public RMAppAttempt getCurrentAppAttempt() {
+ return null;
+ }
};
}