hadoop RegisterApplicationMasterResponse 源码

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

haddop RegisterApplicationMasterResponse 代码

文件路径:/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterResponse.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.yarn.api.protocolrecords;

import java.nio.ByteBuffer;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;

import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Stable;
import org.apache.hadoop.classification.InterfaceStability.Unstable;
import org.apache.hadoop.yarn.api.ApplicationMasterProtocol;
import org.apache.hadoop.yarn.api.records.ApplicationAccessType;
import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.NMToken;
import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.ResourceTypeInfo;
import org.apache.hadoop.yarn.proto.YarnServiceProtos.SchedulerResourceTypes;
import org.apache.hadoop.yarn.util.Records;

/**
 * The response sent by the {@code ResourceManager} to a new
 * {@code ApplicationMaster} on registration.
 * <p>
 * The response contains critical details such as:
 * <ul>
 *   <li>Maximum capability for allocated resources in the cluster.</li>
 *   <li>{@code ApplicationACL}s for the application.</li>
 *   <li>ClientToAMToken master key.</li>
 * </ul>
 * 
 * @see ApplicationMasterProtocol#registerApplicationMaster(RegisterApplicationMasterRequest)
 */
@Public
@Stable
public abstract class RegisterApplicationMasterResponse {

  @Private
  @Unstable
  public static RegisterApplicationMasterResponse newInstance(
      Resource minCapability, Resource maxCapability,
      Map<ApplicationAccessType, String> acls, ByteBuffer key,
      List<Container> containersFromPreviousAttempt, String queue,
      List<NMToken> nmTokensFromPreviousAttempts) {
    RegisterApplicationMasterResponse response =
        Records.newRecord(RegisterApplicationMasterResponse.class);
    response.setMaximumResourceCapability(maxCapability);
    response.setApplicationACLs(acls);
    response.setClientToAMTokenMasterKey(key);
    response.setContainersFromPreviousAttempts(containersFromPreviousAttempt);
    response.setNMTokensFromPreviousAttempts(nmTokensFromPreviousAttempts);
    response.setQueue(queue);
    return response;
  }

  /**
   * Get the maximum capability for any {@link Resource} allocated by the 
   * <code>ResourceManager</code> in the cluster.
   * @return maximum capability of allocated resources in the cluster
   */
  @Public
  @Stable
  public abstract Resource getMaximumResourceCapability();
  
  @Private
  @Unstable
  public abstract void setMaximumResourceCapability(Resource capability);

  /**
   * Get the <code>ApplicationACL</code>s for the application. 
   * @return all the <code>ApplicationACL</code>s
   */
  @Public
  @Stable
  public abstract Map<ApplicationAccessType, String> getApplicationACLs();

  /**
   * Set the <code>ApplicationACL</code>s for the application. 
   * @param acls
   */
  @Private
  @Unstable
  public abstract void setApplicationACLs(Map<ApplicationAccessType, String> acls);

  /**
   * <p>Get ClientToAMToken master key.</p>
   * <p>The ClientToAMToken master key is sent to <code>ApplicationMaster</code>
   * by <code>ResourceManager</code> via {@link RegisterApplicationMasterResponse}
   * , used to verify corresponding ClientToAMToken.</p>
   * @return ClientToAMToken master key
   */
  @Public
  @Stable
  public abstract ByteBuffer getClientToAMTokenMasterKey();

  /**
   * Set ClientToAMToken master key.
   */
  @Public
  @Stable
  public abstract void setClientToAMTokenMasterKey(ByteBuffer key);

  /**
   * <p>Get the queue that the application was placed in.<p>
   * @return the queue that the application was placed in.
   */
  @Public
  @Stable
  public abstract String getQueue();
  
  /**
   * <p>Set the queue that the application was placed in.<p>
   */
  @Public
  @Stable
  public abstract void setQueue(String queue);
  
  /**
   * <p>
   * Get the list of running containers as viewed by
   * <code>ResourceManager</code> from previous application attempts.
   * </p>
   * 
   * @return the list of running containers as viewed by
   *         <code>ResourceManager</code> from previous application attempts
   * @see RegisterApplicationMasterResponse#getNMTokensFromPreviousAttempts()
   */
  @Public
  @Unstable
  public abstract List<Container> getContainersFromPreviousAttempts();

  /**
   * Set the list of running containers as viewed by
   * <code>ResourceManager</code> from previous application attempts.
   * 
   * @param containersFromPreviousAttempt
   *          the list of running containers as viewed by
   *          <code>ResourceManager</code> from previous application attempts.
   */
  @Private
  @Unstable
  public abstract void setContainersFromPreviousAttempts(
      List<Container> containersFromPreviousAttempt);

  /**
   * Get the list of NMTokens for communicating with the NMs where the
   * containers of previous application attempts are running.
   * 
   * @return the list of NMTokens for communicating with the NMs where the
   *         containers of previous application attempts are running.
   * 
   * @see RegisterApplicationMasterResponse#getContainersFromPreviousAttempts()
   */
  @Public
  @Stable
  public abstract List<NMToken> getNMTokensFromPreviousAttempts();

  /**
   * Set the list of NMTokens for communicating with the NMs where the the
   * containers of previous application attempts are running.
   * 
   * @param nmTokens
   *          the list of NMTokens for communicating with the NMs where the
   *          containers of previous application attempts are running.
   */
  @Private
  @Unstable
  public abstract void setNMTokensFromPreviousAttempts(List<NMToken> nmTokens);

  /**
   * Get a set of the resource types considered by the scheduler.
   *
   * @return a Map of RM settings
   */
  @Public
  @Unstable
  public abstract EnumSet<SchedulerResourceTypes> getSchedulerResourceTypes();

  /**
   * Set the resource types used by the scheduler.
   *
   * @param types
   *          a set of the resource types that the scheduler considers during
   *          scheduling
   */
  @Private
  @Unstable
  public abstract void setSchedulerResourceTypes(
      EnumSet<SchedulerResourceTypes> types);

  /**
   * Get list of supported resource profiles from RM.
   *
   * @return a map of resource profiles and its capabilities.
   */
  @Public
  @Unstable
  public abstract Map<String, Resource> getResourceProfiles();

  /**
   * Set supported resource profiles for RM.
   *
   * @param profiles
   *          a map of resource profiles with its capabilities.
   */
  @Private
  @Unstable
  public abstract void setResourceProfiles(Map<String, Resource> profiles);

  /**
   * Get available resource types supported by RM.
   *
   * @return a Map of RM settings
   */
  @Public
  @Unstable
  public abstract List<ResourceTypeInfo> getResourceTypes();

  /**
   * Set the resource types used by RM.
   *
   * @param types
   *          a set of the resource types supported by RM.
   */
  @Private
  @Unstable
  public abstract void setResourceTypes(List<ResourceTypeInfo> types);
}

相关信息

hadoop 源码目录

相关文章

hadoop AllocateRequest 源码

hadoop AllocateResponse 源码

hadoop ApplicationsRequestScope 源码

hadoop CancelDelegationTokenRequest 源码

hadoop CancelDelegationTokenResponse 源码

hadoop CommitResponse 源码

hadoop ContainerUpdateRequest 源码

hadoop ContainerUpdateResponse 源码

hadoop FailApplicationAttemptRequest 源码

hadoop FailApplicationAttemptResponse 源码

0  赞