[
https://issues.apache.org/jira/browse/YARN-1412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
gaurav gupta updated YARN-1412:
-------------------------------
Description:
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);
was:
I am trying to allocate containers on a particular node in Yarn but Yarn is
returning me containers on different node although the requested node has
resources available.
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);
> 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
> 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#6144)