Class NMClientAsync
java.lang.Object
org.apache.hadoop.service.AbstractService
org.apache.hadoop.yarn.client.api.async.NMClientAsync
- All Implemented Interfaces:
Closeable,AutoCloseable,org.apache.hadoop.service.Service
- Direct Known Subclasses:
NMClientAsyncImpl
@Public
@Stable
public abstract class NMClientAsync
extends org.apache.hadoop.service.AbstractService
NMClientAsync handles communication with all the NodeManagers
and provides asynchronous updates on getting responses from them. It
maintains a thread pool to communicate with individual NMs where a number of
worker threads process requests to NMs by using NMClientImpl. The max
size of the thread pool is configurable through
YarnConfiguration.NM_CLIENT_ASYNC_THREAD_POOL_MAX_SIZE.
It should be used in conjunction with a CallbackHandler. For example
class MyCallbackHandler extends NMClientAsync.AbstractCallbackHandler {
public void onContainerStarted(ContainerId containerId,
Map<String, ByteBuffer> allServiceResponse) {
[post process after the container is started, process the response]
}
public void onContainerResourceIncreased(ContainerId containerId,
Resource resource) {
[post process after the container resource is increased]
}
public void onContainerStatusReceived(ContainerId containerId,
ContainerStatus containerStatus) {
[make use of the status of the container]
}
public void onContainerStopped(ContainerId containerId) {
[post process after the container is stopped]
}
public void onStartContainerError(
ContainerId containerId, Throwable t) {
[handle the raised exception]
}
public void onGetContainerStatusError(
ContainerId containerId, Throwable t) {
[handle the raised exception]
}
public void onStopContainerError(
ContainerId containerId, Throwable t) {
[handle the raised exception]
}
}
The client's life-cycle should be managed like the following:
NMClientAsync asyncClient =
NMClientAsync.createNMClientAsync(new MyCallbackhandler());
asyncClient.init(conf);
asyncClient.start();
asyncClient.startContainer(container, containerLaunchContext);
[... wait for container being started]
asyncClient.getContainerStatus(container.getId(), container.getNodeId(),
container.getContainerToken());
[... handle the status in the callback instance]
asyncClient.stopContainer(container.getId(), container.getNodeId(),
container.getContainerToken());
[... wait for container being stopped]
asyncClient.stop();
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThe callback abstract class.static interfaceDeprecated.Nested classes/interfaces inherited from interface org.apache.hadoop.service.Service
org.apache.hadoop.service.Service.STATE -
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedNMClientAsync(String name, NMClientAsync.AbstractCallbackHandler callbackHandler) protectedNMClientAsync(String name, NMClientAsync.CallbackHandler callbackHandler) Deprecated.UseNMClientAsync(String, AbstractCallbackHandler)instead.protectedNMClientAsync(String name, NMClient client, NMClientAsync.AbstractCallbackHandler callbackHandler) protectedNMClientAsync(String name, NMClient client, NMClientAsync.CallbackHandler callbackHandler) Deprecated.protectedNMClientAsync(NMClientAsync.AbstractCallbackHandler callbackHandler) protectedNMClientAsync(NMClientAsync.CallbackHandler callbackHandler) Deprecated.UseNMClientAsync(AbstractCallbackHandler)instead. -
Method Summary
Modifier and TypeMethodDescriptionabstract voidcommitLastReInitializationAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId) Commit last reInitialization of the specified container.static NMClientAsynccreateNMClientAsync(NMClientAsync.AbstractCallbackHandler callbackHandler) static NMClientAsynccreateNMClientAsync(NMClientAsync.CallbackHandler callbackHandler) Deprecated.UsecreateNMClientAsync(AbstractCallbackHandler)instead.abstract voidgetContainerStatusAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId, org.apache.hadoop.yarn.api.records.NodeId nodeId) abstract voidincreaseContainerResourceAsync(org.apache.hadoop.yarn.api.records.Container container) Deprecated.abstract voidreInitializeContainerAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId, org.apache.hadoop.yarn.api.records.ContainerLaunchContext containerLaunchContex, boolean autoCommit) Re-Initialize the Container.abstract voidrestartContainerAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId) Restart the specified container.abstract voidrollbackLastReInitializationAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId) Rollback last reInitialization of the specified container.voidsetCallbackHandler(NMClientAsync.CallbackHandler callbackHandler) voidabstract voidstartContainerAsync(org.apache.hadoop.yarn.api.records.Container container, org.apache.hadoop.yarn.api.records.ContainerLaunchContext containerLaunchContext) abstract voidstopContainerAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId, org.apache.hadoop.yarn.api.records.NodeId nodeId) abstract voidupdateContainerResourceAsync(org.apache.hadoop.yarn.api.records.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
-
Field Details
-
client
-
callbackHandler
-
-
Constructor Details
-
NMClientAsync
-
NMClientAsync
-
NMClientAsync
protected NMClientAsync(String name, NMClient client, NMClientAsync.AbstractCallbackHandler callbackHandler) -
NMClientAsync
Deprecated.UseNMClientAsync(AbstractCallbackHandler)instead. -
NMClientAsync
Deprecated.UseNMClientAsync(String, AbstractCallbackHandler)instead. -
NMClientAsync
@Private @VisibleForTesting @Deprecated protected NMClientAsync(String name, NMClient client, NMClientAsync.CallbackHandler callbackHandler) Deprecated.
-
-
Method Details
-
createNMClientAsync
public static NMClientAsync createNMClientAsync(NMClientAsync.AbstractCallbackHandler callbackHandler) -
createNMClientAsync
@Deprecated public static NMClientAsync createNMClientAsync(NMClientAsync.CallbackHandler callbackHandler) Deprecated.UsecreateNMClientAsync(AbstractCallbackHandler)instead. -
startContainerAsync
public abstract void startContainerAsync(org.apache.hadoop.yarn.api.records.Container container, org.apache.hadoop.yarn.api.records.ContainerLaunchContext containerLaunchContext) -
increaseContainerResourceAsync
@Deprecated public abstract void increaseContainerResourceAsync(org.apache.hadoop.yarn.api.records.Container container) Deprecated. -
updateContainerResourceAsync
public abstract void updateContainerResourceAsync(org.apache.hadoop.yarn.api.records.Container container) Update the resources of a container.
The
ApplicationMasteror 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 viaContainer.- Parameters:
container- the container with updated token.
-
reInitializeContainerAsync
public abstract void reInitializeContainerAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId, org.apache.hadoop.yarn.api.records.ContainerLaunchContext containerLaunchContex, boolean autoCommit) Re-Initialize the Container.
- Parameters:
containerId- the Id of the container to Re-Initialize.containerLaunchContex- the updated ContainerLaunchContext.autoCommit- commit re-initialization automatically ?
-
restartContainerAsync
public abstract void restartContainerAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId) Restart the specified container.
- Parameters:
containerId- the Id of the container to restart.
-
rollbackLastReInitializationAsync
public abstract void rollbackLastReInitializationAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId) Rollback last reInitialization of the specified container.
- Parameters:
containerId- the Id of the container to restart.
-
commitLastReInitializationAsync
public abstract void commitLastReInitializationAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId) Commit last reInitialization of the specified container.
- Parameters:
containerId- the Id of the container to commit reInitialize.
-
stopContainerAsync
public abstract void stopContainerAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId, org.apache.hadoop.yarn.api.records.NodeId nodeId) -
getContainerStatusAsync
public abstract void getContainerStatusAsync(org.apache.hadoop.yarn.api.records.ContainerId containerId, org.apache.hadoop.yarn.api.records.NodeId nodeId) -
getClient
-
setClient
-
getCallbackHandler
-
setCallbackHandler
-
NMClientAsync.AbstractCallbackHandlerinstead.