Example usage for org.apache.hadoop.yarn.api.protocolrecords AllocateRequest setReleaseList

List of usage examples for org.apache.hadoop.yarn.api.protocolrecords AllocateRequest setReleaseList

Introduction

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

Prototype

@Public
@Stable
public abstract void setReleaseList(List<ContainerId> releaseContainers);

Source Link

Document

Set the list of ContainerId of containers being released by the ApplicationMaster

Usage

From source file:org.springframework.yarn.am.allocate.DefaultContainerAllocator.java

License:Apache License

@Override
protected AllocateResponse doContainerRequest() {
    List<ResourceRequest> requestedContainers = new ArrayList<ResourceRequest>();
    Map<String, Integer> allocateCounts = allocateCountTracker.getAllocateCounts();

    for (Entry<String, Integer> entry : allocateCounts.entrySet()) {
        requestedContainers.add(getContainerResourceRequest(entry.getValue(), entry.getKey()));
    }/*from   w  w  w.  j  a  v a 2 s. c  o  m*/

    // add pending containers to be released
    List<ContainerId> release = new ArrayList<ContainerId>();
    ContainerId element = null;
    while ((element = releaseContainers.poll()) != null) {
        release.add(element);
    }

    if (log.isDebugEnabled()) {
        log.debug("Requesting containers using " + requestedContainers.size() + " requests.");
        for (ResourceRequest resourceRequest : requestedContainers) {
            log.debug(
                    "ResourceRequest: " + resourceRequest + " with count=" + resourceRequest.getNumContainers()
                            + " with hostName=" + resourceRequest.getResourceName());
        }
        log.debug("Releasing containers " + release.size());
        for (ContainerId cid : release) {
            log.debug("Release container=" + cid);
        }
        log.debug("Request id will be: " + requestId.get());
    }

    // build the allocation request
    AllocateRequest request = Records.newRecord(AllocateRequest.class);
    request.setResponseId(requestId.get());
    request.setAskList(requestedContainers);
    request.setReleaseList(release);
    request.setProgress(applicationProgress);

    // do request and return response
    AllocateResponse allocate = getRmTemplate().allocate(request);
    requestId.set(allocate.getResponseId());
    return allocate;
}