| /** |
| * 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.mapreduce; |
| |
| import java.io.DataInput; |
| import java.io.DataOutput; |
| import java.io.IOException; |
| |
| import org.apache.hadoop.classification.InterfaceAudience; |
| import org.apache.hadoop.classification.InterfaceStability; |
| import org.apache.hadoop.io.Writable; |
| |
| /** |
| * Status information on the current state of the Map-Reduce cluster. |
| * |
| * <p><code>ClusterMetrics</code> provides clients with information such as: |
| * <ol> |
| * <li> |
| * Size of the cluster. |
| * </li> |
| * <li> |
| * Number of blacklisted and decommissioned trackers. |
| * </li> |
| * <li> |
| * Slot capacity of the cluster. |
| * </li> |
| * <li> |
| * The number of currently occupied/reserved map & reduce slots. |
| * </li> |
| * <li> |
| * The number of currently running map & reduce tasks. |
| * </li> |
| * <li> |
| * The number of job submissions. |
| * </li> |
| * </ol></p> |
| * |
| * <p>Clients can query for the latest <code>ClusterMetrics</code>, via |
| * {@link Cluster#getClusterStatus()}.</p> |
| * |
| * @see Cluster |
| */ |
| @InterfaceAudience.Public |
| @InterfaceStability.Evolving |
| public class ClusterMetrics implements Writable { |
| private int runningMaps; |
| private int runningReduces; |
| private int occupiedMapSlots; |
| private int occupiedReduceSlots; |
| private int reservedMapSlots; |
| private int reservedReduceSlots; |
| private int totalMapSlots; |
| private int totalReduceSlots; |
| private int totalJobSubmissions; |
| private int numTrackers; |
| private int numBlacklistedTrackers; |
| private int numDecommissionedTrackers; |
| |
| public ClusterMetrics() { |
| } |
| |
| public ClusterMetrics(int runningMaps, int runningReduces, |
| int occupiedMapSlots, int occupiedReduceSlots, |
| int reservedMapSlots, int reservedReduceSlots, |
| int mapSlots, int reduceSlots, |
| int totalJobSubmissions, |
| int numTrackers, int numBlacklistedTrackers, |
| int numDecommissionedNodes) { |
| this.runningMaps = runningMaps; |
| this.runningReduces = runningReduces; |
| this.occupiedMapSlots = occupiedMapSlots; |
| this.occupiedReduceSlots = occupiedReduceSlots; |
| this.reservedMapSlots = reservedMapSlots; |
| this.reservedReduceSlots = reservedReduceSlots; |
| this.totalMapSlots = mapSlots; |
| this.totalReduceSlots = reduceSlots; |
| this.totalJobSubmissions = totalJobSubmissions; |
| this.numTrackers = numTrackers; |
| this.numBlacklistedTrackers = numBlacklistedTrackers; |
| this.numDecommissionedTrackers = numDecommissionedNodes; |
| } |
| |
| /** |
| * Get the number of running map tasks in the cluster. |
| * |
| * @return running maps |
| */ |
| public int getRunningMaps() { |
| return runningMaps; |
| } |
| |
| /** |
| * Get the number of running reduce tasks in the cluster. |
| * |
| * @return running reduces |
| */ |
| public int getRunningReduces() { |
| return runningReduces; |
| } |
| |
| /** |
| * Get number of occupied map slots in the cluster. |
| * |
| * @return occupied map slot count |
| */ |
| public int getOccupiedMapSlots() { |
| return occupiedMapSlots; |
| } |
| |
| /** |
| * Get the number of occupied reduce slots in the cluster. |
| * |
| * @return occupied reduce slot count |
| */ |
| public int getOccupiedReduceSlots() { |
| return occupiedReduceSlots; |
| } |
| |
| /** |
| * Get number of reserved map slots in the cluster. |
| * |
| * @return reserved map slot count |
| */ |
| public int getReservedMapSlots() { |
| return reservedMapSlots; |
| } |
| |
| /** |
| * Get the number of reserved reduce slots in the cluster. |
| * |
| * @return reserved reduce slot count |
| */ |
| public int getReservedReduceSlots() { |
| return reservedReduceSlots; |
| } |
| |
| /** |
| * Get the total number of map slots in the cluster. |
| * |
| * @return map slot capacity |
| */ |
| public int getMapSlotCapacity() { |
| return totalMapSlots; |
| } |
| |
| /** |
| * Get the total number of reduce slots in the cluster. |
| * |
| * @return reduce slot capacity |
| */ |
| public int getReduceSlotCapacity() { |
| return totalReduceSlots; |
| } |
| |
| /** |
| * Get the total number of job submissions in the cluster. |
| * |
| * @return total number of job submissions |
| */ |
| public int getTotalJobSubmissions() { |
| return totalJobSubmissions; |
| } |
| |
| /** |
| * Get the number of active trackers in the cluster. |
| * |
| * @return active tracker count. |
| */ |
| public int getTaskTrackerCount() { |
| return numTrackers; |
| } |
| |
| /** |
| * Get the number of blacklisted trackers in the cluster. |
| * |
| * @return blacklisted tracker count |
| */ |
| public int getBlackListedTaskTrackerCount() { |
| return numBlacklistedTrackers; |
| } |
| |
| /** |
| * Get the number of decommissioned trackers in the cluster. |
| * |
| * @return decommissioned tracker count |
| */ |
| public int getDecommissionedTaskTrackerCount() { |
| return numDecommissionedTrackers; |
| } |
| |
| @Override |
| public void readFields(DataInput in) throws IOException { |
| runningMaps = in.readInt(); |
| runningReduces = in.readInt(); |
| occupiedMapSlots = in.readInt(); |
| occupiedReduceSlots = in.readInt(); |
| reservedMapSlots = in.readInt(); |
| reservedReduceSlots = in.readInt(); |
| totalMapSlots = in.readInt(); |
| totalReduceSlots = in.readInt(); |
| totalJobSubmissions = in.readInt(); |
| numTrackers = in.readInt(); |
| numBlacklistedTrackers = in.readInt(); |
| numDecommissionedTrackers = in.readInt(); |
| } |
| |
| @Override |
| public void write(DataOutput out) throws IOException { |
| out.writeInt(runningMaps); |
| out.writeInt(runningReduces); |
| out.writeInt(occupiedMapSlots); |
| out.writeInt(occupiedReduceSlots); |
| out.writeInt(reservedMapSlots); |
| out.writeInt(reservedReduceSlots); |
| out.writeInt(totalMapSlots); |
| out.writeInt(totalReduceSlots); |
| out.writeInt(totalJobSubmissions); |
| out.writeInt(numTrackers); |
| out.writeInt(numBlacklistedTrackers); |
| out.writeInt(numDecommissionedTrackers); |
| } |
| |
| } |