| /** |
| * 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 { |
| |
| protected int appsSubmitted; |
| protected int appsCompleted; |
| protected int appsPending; |
| protected int appsRunning; |
| protected int appsFailed; |
| protected int appsKilled; |
| |
| protected long reservedMB; |
| protected long availableMB; |
| protected long allocatedMB; |
| |
| protected int containersAllocated; |
| protected int containersReserved; |
| protected int containersPending; |
| |
| protected long totalMB; |
| protected int totalNodes; |
| protected int lostNodes; |
| protected int unhealthyNodes; |
| protected int decommissionedNodes; |
| protected int rebootedNodes; |
| protected int activeNodes; |
| |
| 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.appsCompleted = metrics.getAppsCompleted(); |
| this.appsPending = metrics.getAppsPending(); |
| this.appsRunning = metrics.getAppsRunning(); |
| this.appsFailed = metrics.getAppsFailed(); |
| this.appsKilled = metrics.getAppsKilled(); |
| |
| this.reservedMB = metrics.getReservedMB(); |
| this.availableMB = metrics.getAvailableMB(); |
| this.allocatedMB = metrics.getAllocatedMB(); |
| |
| this.containersAllocated = metrics.getAllocatedContainers(); |
| this.containersPending = metrics.getPendingContainers(); |
| this.containersReserved = metrics.getReservedContainers(); |
| |
| this.totalMB = availableMB + reservedMB + allocatedMB; |
| this.activeNodes = clusterMetrics.getNumActiveNMs(); |
| this.lostNodes = clusterMetrics.getNumLostNMs(); |
| this.unhealthyNodes = clusterMetrics.getUnhealthyNMs(); |
| this.decommissionedNodes = clusterMetrics.getNumDecommisionedNMs(); |
| this.rebootedNodes = clusterMetrics.getNumRebootedNMs(); |
| this.totalNodes = activeNodes + lostNodes + decommissionedNodes |
| + rebootedNodes; |
| } |
| |
| public int getAppsSubmitted() { |
| return this.appsSubmitted; |
| } |
| |
| public int getAppsCompleted() { |
| return appsCompleted; |
| } |
| |
| public int getAppsPending() { |
| return appsPending; |
| } |
| |
| public int getAppsRunning() { |
| return appsRunning; |
| } |
| |
| public int getAppsFailed() { |
| return appsFailed; |
| } |
| |
| public int getAppsKilled() { |
| return appsKilled; |
| } |
| |
| 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 int getReservedContainers() { |
| return this.containersReserved; |
| } |
| |
| public int getPendingContainers() { |
| return this.containersPending; |
| } |
| |
| public long getTotalMB() { |
| return this.totalMB; |
| } |
| |
| public int getTotalNodes() { |
| return this.totalNodes; |
| } |
| |
| public int getActiveNodes() { |
| return this.activeNodes; |
| } |
| |
| public int getLostNodes() { |
| return this.lostNodes; |
| } |
| |
| public int getRebootedNodes() { |
| return this.rebootedNodes; |
| } |
| |
| public int getUnhealthyNodes() { |
| return this.unhealthyNodes; |
| } |
| |
| public int getDecommissionedNodes() { |
| return this.decommissionedNodes; |
| } |
| |
| } |