hadoop ApplicationMasterProtocol 源码

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

haddop ApplicationMasterProtocol 代码

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

import java.io.IOException;

import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Stable;
import org.apache.hadoop.io.retry.AtMostOnce;
import org.apache.hadoop.io.retry.Idempotent;
import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse;
import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest;
import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterResponse;
import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest;
import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse;
import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ResourceRequest;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.InvalidApplicationMasterRequestException;
import org.apache.hadoop.yarn.exceptions.InvalidResourceBlacklistRequestException;
import org.apache.hadoop.yarn.exceptions.InvalidResourceRequestException;
import org.apache.hadoop.yarn.exceptions.YarnException;

/**
 * <p>The protocol between a live instance of <code>ApplicationMaster</code> 
 * and the <code>ResourceManager</code>.</p>
 * 
 * <p>This is used by the <code>ApplicationMaster</code> to register/unregister
 * and to request and obtain resources in the cluster from the
 * <code>ResourceManager</code>.</p>
 */
@Public
@Stable
public interface ApplicationMasterProtocol {

  /**
   * <p>
   * The interface used by a new <code>ApplicationMaster</code> to register with
   * the <code>ResourceManager</code>.
   * </p>
   *
   * <p>
   * The <code>ApplicationMaster</code> needs to provide details such as RPC
   * Port, HTTP tracking url etc. as specified in
   * {@link RegisterApplicationMasterRequest}.
   * </p>
   *
   * <p>
   * The <code>ResourceManager</code> responds with critical details such as
   * maximum resource capabilities in the cluster as specified in
   * {@link RegisterApplicationMasterResponse}.
   * </p>
   *
   * <p>
   * Re-register is only allowed for <code>Unmanaged Application Master</code>
   * (UAM) HA, with
   * {@link org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext#getKeepContainersAcrossApplicationAttempts()}
   * set to true.
   * </p>
   *
   * @param request registration request
   * @return registration respose
   * @throws YarnException
   * @throws IOException
   * @throws InvalidApplicationMasterRequestException The exception is thrown
   *           when an ApplicationMaster tries to register more then once.
   * @see RegisterApplicationMasterRequest
   * @see RegisterApplicationMasterResponse
   */
  @Public
  @Stable
  @Idempotent
  public RegisterApplicationMasterResponse registerApplicationMaster(
      RegisterApplicationMasterRequest request) 
  throws YarnException, IOException;
  
  /**
   * <p>The interface used by an <code>ApplicationMaster</code> to notify the 
   * <code>ResourceManager</code> about its completion (success or failed).</p>
   * 
   * <p>The <code>ApplicationMaster</code> has to provide details such as 
   * final state, diagnostics (in case of failures) etc. as specified in 
   * {@link FinishApplicationMasterRequest}.</p>
   * 
   * <p>The <code>ResourceManager</code> responds with 
   * {@link FinishApplicationMasterResponse}.</p>
   * 
   * @param request completion request
   * @return completion response
   * @throws YarnException
   * @throws IOException
   * @see FinishApplicationMasterRequest
   * @see FinishApplicationMasterResponse
   */
  @Public
  @Stable
  @AtMostOnce
  public FinishApplicationMasterResponse finishApplicationMaster(
      FinishApplicationMasterRequest request) 
  throws YarnException, IOException;

  /**
   * <p>
   * The main interface between an <code>ApplicationMaster</code> and the
   * <code>ResourceManager</code>.
   * </p>
   * 
   * <p>
   * The <code>ApplicationMaster</code> uses this interface to provide a list of
   * {@link ResourceRequest} and returns unused {@link Container} allocated to
   * it via {@link AllocateRequest}. Optionally, the
   * <code>ApplicationMaster</code> can also <em>blacklist</em> resources which
   * it doesn't want to use.
   * </p>
   * 
   * <p>
   * This also doubles up as a <em>heartbeat</em> to let the
   * <code>ResourceManager</code> know that the <code>ApplicationMaster</code>
   * is alive. Thus, applications should periodically make this call to be kept
   * alive. The frequency depends on
   * {@link YarnConfiguration#RM_AM_EXPIRY_INTERVAL_MS} which defaults to
   * {@link YarnConfiguration#DEFAULT_RM_AM_EXPIRY_INTERVAL_MS}.
   * </p>
   * 
   * <p>
   * The <code>ResourceManager</code> responds with list of allocated
   * {@link Container}, status of completed containers and headroom information
   * for the application.
   * </p>
   * 
   * <p>
   * The <code>ApplicationMaster</code> can use the available headroom
   * (resources) to decide how to utilized allocated resources and make informed
   * decisions about future resource requests.
   * </p>
   * 
   * @param request
   *          allocation request
   * @return allocation response
   * @throws YarnException
   * @throws IOException
   * @throws InvalidApplicationMasterRequestException
   *           This exception is thrown when an ApplicationMaster calls allocate
   *           without registering first.
   * @throws InvalidResourceBlacklistRequestException
   *           This exception is thrown when an application provides an invalid
   *           specification for blacklist of resources.
   * @throws InvalidResourceRequestException
   *           This exception is thrown when a {@link ResourceRequest} is out of
   *           the range of the configured lower and upper limits on the
   *           resources.
   * @see AllocateRequest
   * @see AllocateResponse
   */
  @Public
  @Stable
  @AtMostOnce
  public AllocateResponse allocate(AllocateRequest request) 
  throws YarnException, IOException;
}

相关信息

hadoop 源码目录

相关文章

hadoop ApplicationBaseProtocol 源码

hadoop ApplicationClientProtocol 源码

hadoop ApplicationConstants 源码

hadoop ApplicationHistoryProtocol 源码

hadoop ClientSCMProtocol 源码

hadoop ClientSCMProtocolPB 源码

hadoop ContainerManagementProtocol 源码

hadoop CsiAdaptorPB 源码

hadoop CsiAdaptorPlugin 源码

hadoop CsiAdaptorProtocol 源码

0  赞