org.apache.hadoop.yarn.client.api.async
Class NMClientAsync
java.lang.Object
org.apache.hadoop.service.AbstractService
org.apache.hadoop.yarn.client.api.async.NMClientAsync
- All Implemented Interfaces:
- Closeable, org.apache.hadoop.service.Service
- Direct Known Subclasses:
- NMClientAsyncImpl
@InterfaceAudience.Public
@InterfaceStability.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 implements NMClientAsync.CallbackHandler {
public void onContainerStarted(ContainerId containerId,
Map<String, ByteBuffer> allServiceResponse) {
[post process after the container is started, process the response]
}
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 classes/interfaces inherited from interface org.apache.hadoop.service.Service |
org.apache.hadoop.service.Service.STATE |
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 |
client
protected NMClient client
callbackHandler
protected NMClientAsync.CallbackHandler callbackHandler
NMClientAsync
protected NMClientAsync(NMClientAsync.CallbackHandler callbackHandler)
NMClientAsync
protected NMClientAsync(String name,
NMClientAsync.CallbackHandler callbackHandler)
NMClientAsync
@InterfaceAudience.Private
protected NMClientAsync(String name,
NMClient client,
NMClientAsync.CallbackHandler callbackHandler)
createNMClientAsync
public static NMClientAsync createNMClientAsync(NMClientAsync.CallbackHandler callbackHandler)
startContainerAsync
public abstract void startContainerAsync(org.apache.hadoop.yarn.api.records.Container container,
org.apache.hadoop.yarn.api.records.ContainerLaunchContext containerLaunchContext)
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
public NMClient getClient()
setClient
public void setClient(NMClient client)
getCallbackHandler
public NMClientAsync.CallbackHandler getCallbackHandler()
setCallbackHandler
public void setCallbackHandler(NMClientAsync.CallbackHandler callbackHandler)
Copyright © 2014 Apache Software Foundation. All Rights Reserved.