hadoop-yarn-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Weise (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (YARN-1412) Allocating Containers on a particular Node in Yarn
Date Tue, 10 Dec 2013 22:26:09 GMT

    [ https://issues.apache.org/jira/browse/YARN-1412?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13844750#comment-13844750
] 

Thomas Weise commented on YARN-1412:
------------------------------------

We implemented it in the AM, tracking resource requests made for a specific host with relaxLocality=false
and then, if they are not filled by the scheduler after n heartbeats, dropping host constraint
and switching to relaxLocality=true. We would prefer to leave this to YARN with the combination
of specific host and relaxLocality=true, but it does not work.

The requirement is not unique to our application, and instead of handling it in user land
it would be great to see this working as expected in future YARN versions.


> Allocating Containers on a particular Node in Yarn
> --------------------------------------------------
>
>                 Key: YARN-1412
>                 URL: https://issues.apache.org/jira/browse/YARN-1412
>             Project: Hadoop YARN
>          Issue Type: Bug
>    Affects Versions: 2.2.0
>         Environment: centos, Hadoop 2.2.0
>            Reporter: gaurav gupta
>
> Summary of the problem: 
>  If I pass the node on which I want container and set relax locality default which is
true, I don't get back the container on the node specified even if the resources are available
on the node. It doesn't matter if I set rack or not.
> Here is the snippet of the code that I am using
> AMRMClient<ContainerRequest> amRmClient =  AMRMClient.createAMRMClient();;
>     String host = "h1";
>     Resource capability = Records.newRecord(Resource.class);
>     capability.setMemory(memory);
>     nodes = new String[] {host};
>     // in order to request a host, we also have to request the rack
>     racks = new String[] {"/default-rack"};
>      List<ContainerRequest> containerRequests = new ArrayList<ContainerRequest>();
>     List<ContainerId> releasedContainers = new ArrayList<ContainerId>();
>     containerRequests.add(new ContainerRequest(capability, nodes, racks, Priority.newInstance(priority)));
>     if (containerRequests.size() > 0) {
>       LOG.info("Asking RM for containers: " + containerRequests);
>       for (ContainerRequest cr : containerRequests) {
>         LOG.info("Requested container: {}", cr.toString());
>         amRmClient.addContainerRequest(cr);
>       }
>     }
>     for (ContainerId containerId : releasedContainers) {
>       LOG.info("Released container, id={}", containerId.getId());
>       amRmClient.releaseAssignedContainer(containerId);
>     }
>     return amRmClient.allocate(0);



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Mime
View raw message