hadoop MachineNode 源码

  • 2022-10-20
  • 浏览 (192)

haddop MachineNode 代码

文件路径:/hadoop-tools/hadoop-rumen/src/main/java/org/apache/hadoop/tools/rumen/MachineNode.java

/**
 * 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.tools.rumen;

/**
 * {@link MachineNode} represents the configuration of a cluster node.
 * {@link MachineNode} should be constructed by {@link MachineNode.Builder}.
 */
public final class MachineNode extends Node {
  long memory = -1; // in KB
  int mapSlots = 1;
  int reduceSlots = 1;
  long memoryPerMapSlot = -1; // in KB
  long memoryPerReduceSlot = -1; // in KB
  int numCores = 1;
  
  MachineNode(String name, int level) {
    super(name, level);
  }
  
  @Override
  public boolean equals(Object obj) {
    // name/level sufficient
    return super.equals(obj);
  }

  @Override
  public int hashCode() {
    // match equals
    return super.hashCode();
  }

  /**
   * Get the available physical RAM of the node.
   * @return The available physical RAM of the node, in KB.
   */
  public long getMemory() {
    return memory;
  }
  
  /**
   * Get the number of map slots of the node.
   * @return The number of map slots of the node.
   */
  public int getMapSlots() {
    return mapSlots;
  }
  
  /**
   * Get the number of reduce slots of the node.
   * @return The number of reduce slots fo the node.
   */
  public int getReduceSlots() {
    return reduceSlots;
  }
  
  /**
   * Get the amount of RAM reserved for each map slot.
   * @return the amount of RAM reserved for each map slot, in KB.
   */
  public long getMemoryPerMapSlot() {
    return memoryPerMapSlot;
  }

  /**
   * Get the amount of RAM reserved for each reduce slot.
   * @return the amount of RAM reserved for each reduce slot, in KB.
   */
  public long getMemoryPerReduceSlot() {
    return memoryPerReduceSlot;
  }
  
  /**
   * Get the number of cores of the node.
   * @return the number of cores of the node.
   */
  public int getNumCores() {
    return numCores;
  }

  /**
   * Get the rack node that the machine belongs to.
   * 
   * @return The rack node that the machine belongs to. Returns null if the
   *         machine does not belong to any rack.
   */
  public RackNode getRackNode() {
    return (RackNode)getParent();
  }
  
  @Override
  public synchronized boolean addChild(Node child) {
    throw new IllegalStateException("Cannot add child to MachineNode");
  }

  /**
   * Builder for a NodeInfo object
   */
  public static final class Builder {
    private MachineNode node;
    
    /**
     * Start building a new NodeInfo object.
     * @param name
     *          Unique name of the node. Typically the fully qualified domain
     *          name.
     */
    public Builder(String name, int level) {
      node = new MachineNode(name, level);
    }

    /**
     * Set the physical memory of the node.
     * @param memory Available RAM in KB.
     */
    public Builder setMemory(long memory) {
      node.memory = memory;
      return this;
    }
    
    /**
     * Set the number of map slot for the node.
     * @param mapSlots The number of map slots for the node.
     */
    public Builder setMapSlots(int mapSlots) {
      node.mapSlots = mapSlots;
      return this;
    }
    
    /**
     * Set the number of reduce slot for the node.
     * @param reduceSlots The number of reduce slots for the node.
     */   
    public Builder setReduceSlots(int reduceSlots) {
      node.reduceSlots = reduceSlots;
      return this;
    }
    
    /**
     * Set the amount of RAM reserved for each map slot.
     * @param memoryPerMapSlot The amount of RAM reserved for each map slot, in KB.
     */
    public Builder setMemoryPerMapSlot(long memoryPerMapSlot) {
      node.memoryPerMapSlot = memoryPerMapSlot;
      return this;
    }
    
    /**
     * Set the amount of RAM reserved for each reduce slot.
     * @param memoryPerReduceSlot The amount of RAM reserved for each reduce slot, in KB.
     */
    public Builder setMemoryPerReduceSlot(long memoryPerReduceSlot) {
      node.memoryPerReduceSlot = memoryPerReduceSlot;
      return this;
    }
    
    /**
     * Set the number of cores for the node.
     * @param numCores Number of cores for the node.
     */
    public Builder setNumCores(int numCores) {
      node.numCores = numCores;
      return this;
    }
    
    /**
     * Clone the settings from a reference {@link MachineNode} object.
     * @param ref The reference {@link MachineNode} object.
     */
    public Builder cloneFrom(MachineNode ref) {
      node.memory = ref.memory;
      node.mapSlots = ref.mapSlots;
      node.reduceSlots = ref.reduceSlots;
      node.memoryPerMapSlot = ref.memoryPerMapSlot;
      node.memoryPerReduceSlot = ref.memoryPerReduceSlot;
      node.numCores = ref.numCores;
      return this;
    }
    
    /**
     * Build the {@link MachineNode} object.
     * @return The {@link MachineNode} object being built.
     */
    public MachineNode build() {
      MachineNode retVal = node;
      node = null;
      return retVal;
    }
  }
}

相关信息

hadoop 源码目录

相关文章

hadoop AbstractClusterStory 源码

hadoop Anonymizer 源码

hadoop CDFPiecewiseLinearRandomGenerator 源码

hadoop CDFRandomGenerator 源码

hadoop ClusterStory 源码

hadoop ClusterTopologyReader 源码

hadoop CurrentJHParser 源码

hadoop DeepCompare 源码

hadoop DeepInequalityException 源码

hadoop DefaultInputDemuxer 源码

0  赞