Package org.apache.hadoop.yarn.client.AMRMClient

Examples of org.apache.hadoop.yarn.client.AMRMClient.ContainerRequest


        // implementation does not change its ask on container failures.
        int askCount = numTotalContainers - numRequestedContainers.get();
        numRequestedContainers.addAndGet(askCount);

        if (askCount > 0) {
          ContainerRequest containerAsk = setupContainerAskForRM(askCount);
          resourceManager.addContainerRequest(containerAsk);
        }

        // Send the request to RM
        LOG.info("Asking RM for containers" + ", askCount=" + askCount);
View Full Code Here


    // Set up resource type requirements
    // For now, only memory is supported so we set memory requirements
    Resource capability = Records.newRecord(Resource.class);
    capability.setMemory(containerMemory);

    ContainerRequest request = new ContainerRequest(capability, null, null,
        pri, numContainers);
    LOG.info("Requested container ask: " + request.toString());
    return request;
  }
View Full Code Here

    final String[] racks = { rack };
   
    assertTrue(amClient.ask.size() == 0);
    assertTrue(amClient.release.size() == 0);
   
    amClient.addContainerRequest(new ContainerRequest(capability, nodes,
        racks, priority, 1));
    amClient.addContainerRequest(new ContainerRequest(capability, nodes,
        racks, priority, 3));
    amClient.removeContainerRequest(new ContainerRequest(capability, nodes,
        racks, priority, 2));
   
    int containersRequestedNode = amClient.remoteRequestsTable.get(priority)
        .get(node).get(capability).getNumContainers();
    int containersRequestedRack = amClient.remoteRequestsTable.get(priority)
        .get(rack).get(capability).getNumContainers();
    int containersRequestedAny = amClient.remoteRequestsTable.get(priority)
        .get(AMRMClient.ANY).get(capability).getNumContainers();

    assertTrue(containersRequestedNode == 2);
    assertTrue(containersRequestedRack == 2);
    assertTrue(containersRequestedAny == 2);
    assertTrue(amClient.ask.size() == 3);
    assertTrue(amClient.release.size() == 0);

    // RM should allocate container within 2 calls to allocate()
    int allocatedContainerCount = 0;
    int iterationsLeft = 2;
    Set<ContainerId> releases = new TreeSet<ContainerId>();
    while (allocatedContainerCount < containersRequestedAny
        && iterationsLeft-- > 0) {
      AllocateResponse allocResponse = amClient.allocate(0.1f);
      assertTrue(amClient.ask.size() == 0);
      assertTrue(amClient.release.size() == 0);
     
      assertTrue(nodeCount == amClient.getClusterNodeCount());
      AMResponse amResponse = allocResponse.getAMResponse();
      allocatedContainerCount += amResponse.getAllocatedContainers().size();
      for(Container container : amResponse.getAllocatedContainers()) {
        ContainerId rejectContainerId = container.getId();
        releases.add(rejectContainerId);
        amClient.releaseAssignedContainer(rejectContainerId);
      }
      if(allocatedContainerCount < containersRequestedAny) {
        // sleep to let NM's heartbeat to RM and trigger allocations
        sleep(1000);
      }
    }

    assertTrue(allocatedContainerCount == containersRequestedAny);
    assertTrue(amClient.release.size() == 2);
    assertTrue(amClient.ask.size() == 0);
   
    // need to tell the AMRMClient that we dont need these resources anymore
    amClient.removeContainerRequest(new ContainerRequest(capability, nodes,
        racks, priority, 2));
    assertTrue(amClient.ask.size() == 3);
    // send 0 container count request for resources that are no longer needed
    ResourceRequest snoopRequest = amClient.ask.iterator().next();
    assertTrue(snoopRequest.getNumContainers() == 0);
   
    // test RPC exception handling
    amClient.addContainerRequest(new ContainerRequest(capability, nodes,
        racks, priority, 2));
    snoopRequest = amClient.ask.iterator().next();
    assertTrue(snoopRequest.getNumContainers() == 2);
   
    AMRMProtocol realRM = amClient.rmClient;
    try {
      AMRMProtocol mockRM = mock(AMRMProtocol.class);
      when(mockRM.allocate(any(AllocateRequest.class))).thenAnswer(
          new Answer<AllocateResponse>() {
            public AllocateResponse answer(InvocationOnMock invocation)
                throws Exception {
              amClient.removeContainerRequest(new ContainerRequest(capability,
                  nodes, racks, priority, 2));
              throw new Exception();
            }
          });
      amClient.rmClient = mockRM;
View Full Code Here

TOP

Related Classes of org.apache.hadoop.yarn.client.AMRMClient.ContainerRequest

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.