Example usage for org.apache.hadoop.yarn.api.protocolrecords StartContainersResponse getAllServicesMetaData

List of usage examples for org.apache.hadoop.yarn.api.protocolrecords StartContainersResponse getAllServicesMetaData

Introduction

In this page you can find the example usage for org.apache.hadoop.yarn.api.protocolrecords StartContainersResponse getAllServicesMetaData.

Prototype

@Public
@Stable
public abstract Map<String, ByteBuffer> getAllServicesMetaData();

Source Link

Document

Get the meta-data from all auxiliary services running on the NodeManager.

Usage

From source file:org.apache.tajo.master.YarnContainerProxy.java

License:Apache License

@Override
@SuppressWarnings("unchecked")
public synchronized void launch(ContainerLaunchContext commonContainerLaunchContext) {
    LOG.info("Launching Container with Id: " + containerID);
    if (this.state == ContainerState.KILLED_BEFORE_LAUNCH) {
        state = ContainerState.DONE;//from w  w  w .jav a2  s  .co  m
        LOG.error("Container (" + containerID + " was killed before it was launched");
        return;
    }

    ContainerManagementProtocol proxy = null;
    try {

        proxy = getCMProxy(containerID, containerMgrAddress, containerToken);

        // Construct the actual Container
        ContainerLaunchContext containerLaunchContext = createContainerLaunchContext(
                commonContainerLaunchContext);

        // Now launch the actual container
        List<StartContainerRequest> startRequestList = new ArrayList<StartContainerRequest>();
        StartContainerRequest startRequest = Records.newRecord(StartContainerRequest.class);
        startRequest.setContainerLaunchContext(containerLaunchContext);
        startRequestList.add(startRequest);
        StartContainersRequest startRequests = Records.newRecord(StartContainersRequest.class);
        startRequests.setStartContainerRequests(startRequestList);
        StartContainersResponse response = proxy.startContainers(startRequests);

        ByteBuffer portInfo = response.getAllServicesMetaData().get(PullServerAuxService.PULLSERVER_SERVICEID);

        if (portInfo != null) {
            port = PullServerAuxService.deserializeMetaData(portInfo);
        }

        LOG.info("PullServer port returned by ContainerManager for " + containerID + " : " + port);

        if (port < 0) {
            this.state = ContainerState.FAILED;
            throw new IllegalStateException(
                    "Invalid shuffle port number " + port + " returned for " + containerID);
        }

        this.state = ContainerState.RUNNING;
        this.hostName = containerMgrAddress.split(":")[0];
        context.getResourceAllocator().addContainer(containerID, this);
    } catch (Throwable t) {
        String message = "Container launch failed for " + containerID + " : "
                + StringUtils.stringifyException(t);
        this.state = ContainerState.FAILED;
        LOG.error(message);
    } finally {
        if (proxy != null) {
            yarnRPC.stopProxy(proxy, conf);
        }
    }
}