org.apache.hadoop.yarn.api.protocolrecords

## Class AllocateResponse

- java.lang.Object
- - org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse

-     @InterfaceAudience.Public
       @InterfaceStability.Stable
      public abstract class AllocateResponse
      extends Object

  The response sent by the `ResourceManager` the `ApplicationMaster` during resource negotiation.

  The response, includes:

  - Response ID to track duplicate responses.
  - An AMCommand sent by ResourceManager to let the `ApplicationMaster` take some actions (resync, shutdown etc.).
  - A list of newly allocated `Container`.
  - A list of completed `Container`s' statuses.
  - The available headroom for resources in the cluster for the application.
  - A list of nodes whose status has been updated.
  - The number of available nodes in a cluster.
  - A description of resources requested back by the cluster
  - AMRMToken, if AMRMToken has been rolled over
  - A list of `Container` representing the containers whose resource has been increased.
  - A list of `Container` representing the containers whose resource has been decreased.
  See Also:
    `ApplicationMasterProtocol.allocate(AllocateRequest)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AllocateResponse()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract List<Container>` | `getAllocatedContainers()` Get the list of newly allocated `Container` by the `ResourceManager`.
    `abstract AMCommand` | `getAMCommand()` If the `ResourceManager` needs the `ApplicationMaster` to take some action then it will send an AMCommand to the `ApplicationMaster`.
    `abstract Token` | `getAMRMToken()` The AMRMToken that belong to this attempt
    `abstract Priority` | `getApplicationPriority()` Priority of the application
    `abstract Resource` | `getAvailableResources()` Get the available headroom for resources in the cluster for the application.
    `abstract CollectorInfo` | `getCollectorInfo()` The data associated with the collector that belongs to this app.
    `abstract List<ContainerStatus>` | `getCompletedContainersStatuses()` Get the list of completed containers' statuses.
    `abstract List<Container>` | `getContainersFromPreviousAttempts()` Get the list of running containers as viewed by `ResourceManager` from previous application attempts which have not been reported to the Application Master yet.
    `abstract List<NMToken>` | `getNMTokens()` Get the list of NMTokens required for communicating with NM.
    `abstract int` | `getNumClusterNodes()` Get the number of hosts available on the cluster.
    `abstract PreemptionMessage` | `getPreemptionMessage()` Get the description of containers owned by the AM, but requested back by the cluster.
    `List<RejectedSchedulingRequest>` | `getRejectedSchedulingRequests()` Get a list of all SchedulingRequests that the RM has rejected between this allocate call and the previous one.
    `abstract int` | `getResponseId()` Get the last response id.
    `abstract List<UpdatedContainer>` | `getUpdatedContainers()` Get the list of newly updated containers by `ResourceManager`.
    `abstract List<NodeReport>` | `getUpdatedNodes()` Get the list of updated `NodeReport`s.
    `List<UpdateContainerError>` | `getUpdateErrors()` Get the list of container update errors to inform the Application Master about the container updates that could not be satisfied due to error.
    `static AllocateResponse` | `newInstance(int responseId, List<ContainerStatus> completedContainers, List<Container> allocatedContainers, List<NodeReport> updatedNodes, Resource availResources, AMCommand command, int numClusterNodes, PreemptionMessage preempt, List<NMToken> nmTokens)`
    `static AllocateResponse` | `newInstance(int responseId, List<ContainerStatus> completedContainers, List<Container> allocatedContainers, List<NodeReport> updatedNodes, Resource availResources, AMCommand command, int numClusterNodes, PreemptionMessage preempt, List<NMToken> nmTokens, Token amRMToken, List<UpdatedContainer> updatedContainers, CollectorInfo collectorInfo)`
    `void` | `setUpdateErrors(List<UpdateContainerError> updateErrors)` Set the list of container update errors to inform the Application Master about the container updates that could not be satisfied due to error.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AllocateResponse

          public AllocateResponse()

  - ### Method Detail

    - #### newInstance

          @InterfaceAudience.Public
           @InterfaceStability.Stable
          public static AllocateResponse newInstance(int responseId,
                                                                                                           List<ContainerStatus> completedContainers,
                                                                                                           List<Container> allocatedContainers,
                                                                                                           List<NodeReport> updatedNodes,
                                                                                                           Resource availResources,
                                                                                                           AMCommand command,
                                                                                                           int numClusterNodes,
                                                                                                           PreemptionMessage preempt,
                                                                                                           List<NMToken> nmTokens)

    - #### newInstance

          @InterfaceAudience.Public
           @InterfaceStability.Unstable
          public static AllocateResponse newInstance(int responseId,
                                                                                                             List<ContainerStatus> completedContainers,
                                                                                                             List<Container> allocatedContainers,
                                                                                                             List<NodeReport> updatedNodes,
                                                                                                             Resource availResources,
                                                                                                             AMCommand command,
                                                                                                             int numClusterNodes,
                                                                                                             PreemptionMessage preempt,
                                                                                                             List<NMToken> nmTokens,
                                                                                                             Token amRMToken,
                                                                                                             List<UpdatedContainer> updatedContainers,
                                                                                                             CollectorInfo collectorInfo)

    - #### getAMCommand

          @InterfaceAudience.Public
           @InterfaceStability.Stable
          public abstract AMCommand getAMCommand()

      If the `ResourceManager` needs the `ApplicationMaster` to take some action then it will send an AMCommand to the `ApplicationMaster`. See `AMCommand` for details on commands and actions for them.
      Returns:
        `AMCommand` if the `ApplicationMaster` should take action, `null` otherwise
      See Also:
        `AMCommand`

    - #### getResponseId

          @InterfaceAudience.Public
           @InterfaceStability.Stable
          public abstract int getResponseId()

      Get the last response id.
      Returns:
        last response id

    - #### getAllocatedContainers

          @InterfaceAudience.Public
           @InterfaceStability.Stable
          public abstract List<Container> getAllocatedContainers()

      Get the list of newly allocated `Container` by the `ResourceManager`.
      Returns:
        list of newly allocated `Container`

    - #### getAvailableResources

          @InterfaceAudience.Public
           @InterfaceStability.Stable
          public abstract Resource getAvailableResources()

      Get the available headroom for resources in the cluster for the application.
      Returns:
        limit of available headroom for resources in the cluster for the application

    - #### getCompletedContainersStatuses

          @InterfaceAudience.Public
           @InterfaceStability.Stable
          public abstract List<ContainerStatus> getCompletedContainersStatuses()

      Get the list of completed containers' statuses.
      Returns:
        the list of completed containers' statuses

    - #### getUpdatedNodes

          @InterfaceAudience.Public
           @InterfaceStability.Stable
          public abstract List<NodeReport> getUpdatedNodes()

      Get the list of updated `NodeReport`s. Updates could be changes in health, availability etc of the nodes.
      Returns:
        The delta of updated nodes since the last response

    - #### getNumClusterNodes

          @InterfaceAudience.Public
           @InterfaceStability.Stable
          public abstract int getNumClusterNodes()

      Get the number of hosts available on the cluster.
      Returns:
        the available host count.

    - #### getPreemptionMessage

          @InterfaceAudience.Public
           @InterfaceStability.Evolving
          public abstract PreemptionMessage getPreemptionMessage()

      Get the description of containers owned by the AM, but requested back by the cluster. Note that the RM may have an inconsistent view of the resources owned by the AM. These messages are advisory, and the AM may elect to ignore them.

      The message is a snapshot of the resources the RM wants back from the AM. While demand persists, the RM will repeat its request; applications should not interpret each message as a request for additional resources on top of previous messages. Resources requested consistently over some duration may be forcibly killed by the RM.

      Returns:
        A specification of the resources to reclaim from this AM.

    - #### getNMTokens

          @InterfaceAudience.Public
           @InterfaceStability.Stable
          public abstract List<NMToken> getNMTokens()

      Get the list of NMTokens required for communicating with NM. New NMTokens issued only if

      1) AM is receiving first container on underlying NodeManager.
      OR
      2) NMToken master key rolled over in ResourceManager and AM is getting new container on the same underlying NodeManager.

      AM will receive one NMToken per NM irrespective of the number of containers issued on same NM. AM is expected to store these tokens until issued a new token for the same NM.

      Returns:
        list of NMTokens required for communicating with NM

    - #### getUpdatedContainers

          @InterfaceAudience.Public
           @InterfaceStability.Unstable
          public abstract List<UpdatedContainer> getUpdatedContainers()

      Get the list of newly updated containers by `ResourceManager`.
      Returns:
        list of newly increased containers

    - #### getAMRMToken

          @InterfaceAudience.Public
           @InterfaceStability.Unstable
          public abstract Token getAMRMToken()

      The AMRMToken that belong to this attempt
      Returns:
        The AMRMToken that belong to this attempt

    - #### getApplicationPriority

          @InterfaceAudience.Public
           @InterfaceStability.Unstable
          public abstract Priority getApplicationPriority()

      Priority of the application
      Returns:
        get application priority

    - #### getCollectorInfo

          @InterfaceAudience.Public
           @InterfaceStability.Unstable
          public abstract CollectorInfo getCollectorInfo()

      The data associated with the collector that belongs to this app. Contains address and token alongwith identification information.
      Returns:
        The data of collector that belong to this attempt

    - #### getUpdateErrors

          @InterfaceAudience.Public
           @InterfaceStability.Unstable
          public List<UpdateContainerError> getUpdateErrors()

      Get the list of container update errors to inform the Application Master about the container updates that could not be satisfied due to error.
      Returns:
        List of Update Container Errors.

    - #### setUpdateErrors

          @InterfaceAudience.Public
           @InterfaceStability.Unstable
          public void setUpdateErrors(List<UpdateContainerError> updateErrors)

      Set the list of container update errors to inform the Application Master about the container updates that could not be satisfied due to error.
      Parameters:
        `updateErrors` - list of `UpdateContainerError` for containers updates requests that were in error

    - #### getContainersFromPreviousAttempts

          @InterfaceAudience.Public
           @InterfaceStability.Unstable
          public abstract List<Container> getContainersFromPreviousAttempts()

      Get the list of running containers as viewed by `ResourceManager` from previous application attempts which have not been reported to the Application Master yet.
      These containers were recovered by the RM after the application master had already registered. This may happen after RM restart when some NMs get delayed in connecting to the RM and reporting the active containers. Since they were not reported in the registration response, they are reported in the response to the AM heartbeat.
      Returns:
        the list of running containers as viewed by `ResourceManager` from previous application attempts.

    - #### getRejectedSchedulingRequests

          @InterfaceAudience.Public
           @InterfaceStability.Unstable
          public List<RejectedSchedulingRequest> getRejectedSchedulingRequests()

      Get a list of all SchedulingRequests that the RM has rejected between this allocate call and the previous one.
      Returns:
        List of RejectedSchedulingRequests.

Copyright © 2022 Apache Software Foundation. All rights reserved.