org.apache.hadoop.yarn.client.api

## Class NMClient

- java.lang.Object
- - org.apache.hadoop.service.AbstractService
  - - org.apache.hadoop.yarn.client.api.NMClient

- All Implemented Interfaces:
    Closeable, AutoCloseable, Service

      @InterfaceAudience.Public
       @InterfaceStability.Stable
      public abstract class NMClient
      extends AbstractService

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `NMClient(String name)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract void` | `cleanupRunningContainersOnStop(boolean enabled)` Set whether the containers that are started by this client, and are still running should be stopped when the client stops.
    `abstract void` | `commitLastReInitialization(ContainerId containerId)` Commit last reInitialization of the specified container.
    `static NMClient` | `createNMClient()` Create a new instance of NMClient.
    `static NMClient` | `createNMClient(String name)` Create a new instance of NMClient.
    `abstract ContainerStatus` | `getContainerStatus(ContainerId containerId, NodeId nodeId)` Query the status of a container.
    `NMTokenCache` | `getNMTokenCache()` Get the NM token cache of the `NMClient`.
    `NodeId` | `getNodeIdOfStartedContainer(ContainerId containerId)` Get the NodeId of the node on which container is running.
    `abstract void` | `increaseContainerResource(Container container)` Deprecated.
    `abstract void` | `reInitializeContainer(ContainerId containerId, ContainerLaunchContext containerLaunchContex, boolean autoCommit)` Re-Initialize the Container.
    `abstract void` | `restartContainer(ContainerId containerId)` Restart the specified container.
    `abstract void` | `rollbackLastReInitialization(ContainerId containerId)` Rollback last reInitialization of the specified container.
    `void` | `setNMTokenCache(NMTokenCache nmTokenCache)` Set the NM Token cache of the `NMClient`.
    `abstract Map<String,ByteBuffer>` | `startContainer(Container container, ContainerLaunchContext containerLaunchContext)` Start an allocated container.
    `abstract void` | `stopContainer(ContainerId containerId, NodeId nodeId)` Stop an started container.
    `abstract void` | `updateContainerResource(Container container)` Update the resources of a container.

    - ### Methods inherited from class org.apache.hadoop.service.AbstractService

      `close, getBlockers, getConfig, getFailureCause, getFailureState, getLifecycleHistory, getName, getServiceState, getStartTime, init, isInState, noteFailure, putBlocker, registerGlobalListener, registerServiceListener, removeBlocker, serviceInit, serviceStart, serviceStop, setConfig, start, stop, toString, unregisterGlobalListener, unregisterServiceListener, waitForServiceToStop`

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

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

- - ### Constructor Detail

    - #### NMClient

          @InterfaceAudience.Private
          protected NMClient(String name)

  - ### Method Detail

    - #### createNMClient

          @InterfaceAudience.Public
          public static NMClient createNMClient()

      Create a new instance of NMClient.

    - #### createNMClient

          @InterfaceAudience.Public
          public static NMClient createNMClient(String name)

      Create a new instance of NMClient.

    - #### startContainer

          public abstract Map<String,ByteBuffer> startContainer(Container container,
                                                                ContainerLaunchContext containerLaunchContext)
                                                         throws YarnException,
                                                                IOException

      Start an allocated container.

      The `ApplicationMaster` or other applications that use the client must provide the details of the allocated container, including the Id, the assigned node's Id and the token via `Container`. In addition, the AM needs to provide the `ContainerLaunchContext` as well.

      Parameters:
        `container` - the allocated container
        `containerLaunchContext` - the context information needed by the `NodeManager` to launch the container
      Returns:
        a map between the auxiliary service names and their outputs
      Throws:
        `YarnException` - YarnException.
        `IOException` - IOException.

    - #### increaseContainerResource

          @Deprecated
          public abstract void increaseContainerResource(Container container)
                                                              throws YarnException,
                                                                     IOException

      Deprecated.

      Increase the resource of a container.

      The `ApplicationMaster` or other applications that use the client must provide the details of the container, including the Id and the target resource encapsulated in the updated container token via `Container`.

      Parameters:
        `container` - the container with updated token.
      Throws:
        `YarnException` - YarnException.
        `IOException` - IOException.

    - #### updateContainerResource

          public abstract void updateContainerResource(Container container)
                                                throws YarnException,
                                                       IOException

      Update the resources of a container.

      The `ApplicationMaster` or other applications that use the client must provide the details of the container, including the Id and the target resource encapsulated in the updated container token via `Container`.

      Parameters:
        `container` - the container with updated token.
      Throws:
        `YarnException` - YarnException.
        `IOException` - IOException.

    - #### stopContainer

          public abstract void stopContainer(ContainerId containerId,
                                             NodeId nodeId)
                                      throws YarnException,
                                             IOException

      Stop an started container.

      Parameters:
        `containerId` - the Id of the started container
        `nodeId` - the Id of the `NodeManager`
      Throws:
        `YarnException` - YarnException.
        `IOException` - IOException.

    - #### getContainerStatus

          public abstract ContainerStatus getContainerStatus(ContainerId containerId,
                                                             NodeId nodeId)
                                                      throws YarnException,
                                                             IOException

      Query the status of a container.

      Parameters:
        `containerId` - the Id of the started container
        `nodeId` - the Id of the `NodeManager`
      Returns:
        the status of a container.
      Throws:
        `YarnException` - YarnException.
        `IOException` - IOException.

    - #### reInitializeContainer

          public abstract void reInitializeContainer(ContainerId containerId,
                                                     ContainerLaunchContext containerLaunchContex,
                                                     boolean autoCommit)
                                              throws YarnException,
                                                     IOException

      Re-Initialize the Container.

      Parameters:
        `containerId` - the Id of the container to Re-Initialize.
        `containerLaunchContex` - the updated ContainerLaunchContext.
        `autoCommit` - commit re-initialization automatically ?
      Throws:
        `YarnException` - YarnException.
        `IOException` - IOException.

    - #### restartContainer

          public abstract void restartContainer(ContainerId containerId)
                                         throws YarnException,
                                                IOException

      Restart the specified container.

      Parameters:
        `containerId` - the Id of the container to restart.
      Throws:
        `YarnException` - YarnException.
        `IOException` - IOException.

    - #### rollbackLastReInitialization

          public abstract void rollbackLastReInitialization(ContainerId containerId)
                                                     throws YarnException,
                                                            IOException

      Rollback last reInitialization of the specified container.

      Parameters:
        `containerId` - the Id of the container to restart.
      Throws:
        `YarnException` - YarnException.
        `IOException` - IOException.

    - #### commitLastReInitialization

          public abstract void commitLastReInitialization(ContainerId containerId)
                                                   throws YarnException,
                                                          IOException

      Commit last reInitialization of the specified container.

      Parameters:
        `containerId` - the Id of the container to commit reInitialize.
      Throws:
        `YarnException` - YarnException.
        `IOException` - IOException.

    - #### cleanupRunningContainersOnStop

          public abstract void cleanupRunningContainersOnStop(boolean enabled)

      Set whether the containers that are started by this client, and are still running should be stopped when the client stops. By default, the feature should be enabled.

      However, containers will be stopped only when service is stopped. i.e. after `AbstractService.stop()`.
      Parameters:
        `enabled` - whether the feature is enabled or not

    - #### setNMTokenCache

          public void setNMTokenCache(NMTokenCache nmTokenCache)

      Set the NM Token cache of the `NMClient`. This cache must be shared with the `AMRMClient` that requested the containers managed by this `NMClient`

      If a NM token cache is not set, the `NMTokenCache.getSingleton()` singleton instance will be used.

      Parameters:
        `nmTokenCache` - the NM token cache to use.

    - #### getNMTokenCache

          public NMTokenCache getNMTokenCache()

      Get the NM token cache of the `NMClient`. This cache must be shared with the `AMRMClient` that requested the containers managed by this `NMClient`

      If a NM token cache is not set, the `NMTokenCache.getSingleton()` singleton instance will be used.

      Returns:
        the NM token cache

    - #### getNodeIdOfStartedContainer

          public NodeId getNodeIdOfStartedContainer(ContainerId containerId)

      Get the NodeId of the node on which container is running. It returns null if the container if container is not found or if it is not running.
      Parameters:
        `containerId` - Container Id of the container.
      Returns:
        NodeId of the container on which it is running.

Copyright © 2022 Apache Software Foundation. All rights reserved.