Java Code Examples for org.apache.hadoop.yarn.server.resourcemanager.scheduler.common.fica.FiCaSchedulerApp#getNodeIdToUnreserve()

The following examples show how to use org.apache.hadoop.yarn.server.resourcemanager.scheduler.common.fica.FiCaSchedulerApp#getNodeIdToUnreserve() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: LeafQueue.java    From hadoop with Apache License 2.0 4 votes vote down vote up
@Private
protected boolean findNodeToUnreserve(Resource clusterResource,
    FiCaSchedulerNode node, FiCaSchedulerApp application, Priority priority,
    Resource minimumUnreservedResource) {
  // need to unreserve some other container first
  NodeId idToUnreserve =
      application.getNodeIdToUnreserve(priority, minimumUnreservedResource,
          resourceCalculator, clusterResource);
  if (idToUnreserve == null) {
    if (LOG.isDebugEnabled()) {
      LOG.debug("checked to see if could unreserve for app but nothing "
          + "reserved that matches for this app");
    }
    return false;
  }
  FiCaSchedulerNode nodeToUnreserve = scheduler.getNode(idToUnreserve);
  if (nodeToUnreserve == null) {
    LOG.error("node to unreserve doesn't exist, nodeid: " + idToUnreserve);
    return false;
  }
  if (LOG.isDebugEnabled()) {
    LOG.debug("unreserving for app: " + application.getApplicationId()
      + " on nodeId: " + idToUnreserve
      + " in order to replace reserved application and place it on node: "
      + node.getNodeID() + " needing: " + minimumUnreservedResource);
  }

  // headroom
  Resources.addTo(application.getHeadroom(), nodeToUnreserve
      .getReservedContainer().getReservedResource());

  // Make sure to not have completedContainers sort the queues here since
  // we are already inside an iterator loop for the queues and this would
  // cause an concurrent modification exception.
  completedContainer(clusterResource, application, nodeToUnreserve,
      nodeToUnreserve.getReservedContainer(),
      SchedulerUtils.createAbnormalContainerStatus(nodeToUnreserve
          .getReservedContainer().getContainerId(),
          SchedulerUtils.UNRESERVED_CONTAINER),
      RMContainerEventType.RELEASED, null, false);
  return true;
}
 
Example 2
Source File: TestReservations.java    From hadoop with Apache License 2.0 4 votes vote down vote up
@Test
public void testGetAppToUnreserve() throws Exception {

  CapacitySchedulerConfiguration csConf = new CapacitySchedulerConfiguration();
  setup(csConf);
  final String user_0 = "user_0";
  final ApplicationAttemptId appAttemptId_0 = TestUtils
      .getMockApplicationAttemptId(0, 0);
  LeafQueue a = stubLeafQueue((LeafQueue) queues.get(A));
  FiCaSchedulerApp app_0 = new FiCaSchedulerApp(appAttemptId_0, user_0, a,
      mock(ActiveUsersManager.class), spyRMContext);

  String host_0 = "host_0";
  FiCaSchedulerNode node_0 = TestUtils.getMockNode(host_0, DEFAULT_RACK, 0,
      8 * GB);
  String host_1 = "host_1";
  FiCaSchedulerNode node_1 = TestUtils.getMockNode(host_1, DEFAULT_RACK, 0,
      8 * GB);
  
  Resource clusterResource = Resources.createResource(2 * 8 * GB);

  // Setup resource-requests
  Priority priorityMap = TestUtils.createMockPriority(5);
  Resource capability = Resources.createResource(2*GB, 0);

  RMApplicationHistoryWriter writer = mock(RMApplicationHistoryWriter.class);
  SystemMetricsPublisher publisher = mock(SystemMetricsPublisher.class);
  RMContext rmContext = mock(RMContext.class);
  ContainerAllocationExpirer expirer =
    mock(ContainerAllocationExpirer.class);
  DrainDispatcher drainDispatcher = new DrainDispatcher();
  when(rmContext.getContainerAllocationExpirer()).thenReturn(expirer);
  when(rmContext.getDispatcher()).thenReturn(drainDispatcher);
  when(rmContext.getRMApplicationHistoryWriter()).thenReturn(writer);
  when(rmContext.getSystemMetricsPublisher()).thenReturn(publisher);
  ApplicationAttemptId appAttemptId = BuilderUtils.newApplicationAttemptId(
      app_0.getApplicationId(), 1);
  ContainerId containerId = BuilderUtils.newContainerId(appAttemptId, 1);
  Container container = TestUtils.getMockContainer(containerId,
      node_1.getNodeID(), Resources.createResource(2*GB), priorityMap);
  RMContainer rmContainer = new RMContainerImpl(container, appAttemptId,
      node_1.getNodeID(), "user", rmContext);

  Container container_1 = TestUtils.getMockContainer(containerId,
      node_0.getNodeID(), Resources.createResource(1*GB), priorityMap);
  RMContainer rmContainer_1 = new RMContainerImpl(container_1, appAttemptId,
      node_0.getNodeID(), "user", rmContext);

  // no reserved containers
  NodeId unreserveId =
      app_0.getNodeIdToUnreserve(priorityMap, capability,
          cs.getResourceCalculator(), clusterResource);
  assertEquals(null, unreserveId);

  // no reserved containers - reserve then unreserve
  app_0.reserve(node_0, priorityMap, rmContainer_1, container_1);
  app_0.unreserve(node_0, priorityMap);
  unreserveId = app_0.getNodeIdToUnreserve(priorityMap, capability,
      cs.getResourceCalculator(), clusterResource);
  assertEquals(null, unreserveId);

  // no container large enough is reserved
  app_0.reserve(node_0, priorityMap, rmContainer_1, container_1);
  unreserveId = app_0.getNodeIdToUnreserve(priorityMap, capability,
      cs.getResourceCalculator(), clusterResource);
  assertEquals(null, unreserveId);

  // reserve one that is now large enough
  app_0.reserve(node_1, priorityMap, rmContainer, container);
  unreserveId = app_0.getNodeIdToUnreserve(priorityMap, capability,
      cs.getResourceCalculator(), clusterResource);
  assertEquals(node_1.getNodeID(), unreserveId);
}
 
Example 3
Source File: LeafQueue.java    From big-c with Apache License 2.0 4 votes vote down vote up
@Private
protected boolean findNodeToUnreserve(Resource clusterResource,
    FiCaSchedulerNode node, FiCaSchedulerApp application, Priority priority,
    Resource minimumUnreservedResource) {
  // need to unreserve some other container first
  NodeId idToUnreserve =
      application.getNodeIdToUnreserve(priority, minimumUnreservedResource,
          resourceCalculator, clusterResource);
  
  
  if (idToUnreserve == null) {
    if (LOG.isDebugEnabled()) {
      LOG.debug("checked to see if could unreserve for app but nothing "
          + "reserved that matches for this app");
    }
    return false;
  }
  FiCaSchedulerNode nodeToUnreserve = scheduler.getNode(idToUnreserve);
  if (nodeToUnreserve == null) {
    LOG.error("node to unreserve doesn't exist, nodeid: " + idToUnreserve);
    return false;
  }
  
 {
    LOG.info("unreserving for app: " + application.getApplicationId()
      + " on nodeId: " + idToUnreserve
      + " in order to replace reserved application and place it on node: "
      + node.getNodeID() + " needing: " + minimumUnreservedResource);
  }

  // headroom
  Resources.addTo(application.getHeadroom(), nodeToUnreserve
      .getReservedContainer().getReservedResource());

  // Make sure to not have completedContainers sort the queues here since
  // we are already inside an iterator loop for the queues and this would
  // cause an concurrent modification exception.
  completedContainer(clusterResource, application, nodeToUnreserve,
      nodeToUnreserve.getReservedContainer(),
      SchedulerUtils.createAbnormalContainerStatus(nodeToUnreserve
          .getReservedContainer().getContainerId(),
          SchedulerUtils.UNRESERVED_CONTAINER),
      RMContainerEventType.RELEASED, null, false);
  return true;
}
 
Example 4
Source File: TestReservations.java    From big-c with Apache License 2.0 4 votes vote down vote up
@Test
public void testGetAppToUnreserve() throws Exception {

  CapacitySchedulerConfiguration csConf = new CapacitySchedulerConfiguration();
  setup(csConf);
  final String user_0 = "user_0";
  final ApplicationAttemptId appAttemptId_0 = TestUtils
      .getMockApplicationAttemptId(0, 0);
  LeafQueue a = stubLeafQueue((LeafQueue) queues.get(A));
  FiCaSchedulerApp app_0 = new FiCaSchedulerApp(appAttemptId_0, user_0, a,
      mock(ActiveUsersManager.class), spyRMContext);

  String host_0 = "host_0";
  FiCaSchedulerNode node_0 = TestUtils.getMockNode(host_0, DEFAULT_RACK, 0,
      8 * GB);
  String host_1 = "host_1";
  FiCaSchedulerNode node_1 = TestUtils.getMockNode(host_1, DEFAULT_RACK, 0,
      8 * GB);
  
  Resource clusterResource = Resources.createResource(2 * 8 * GB);

  // Setup resource-requests
  Priority priorityMap = TestUtils.createMockPriority(5);
  Resource capability = Resources.createResource(2*GB, 0);

  RMApplicationHistoryWriter writer = mock(RMApplicationHistoryWriter.class);
  SystemMetricsPublisher publisher = mock(SystemMetricsPublisher.class);
  RMContext rmContext = mock(RMContext.class);
  ContainerAllocationExpirer expirer =
    mock(ContainerAllocationExpirer.class);
  DrainDispatcher drainDispatcher = new DrainDispatcher();
  when(rmContext.getContainerAllocationExpirer()).thenReturn(expirer);
  when(rmContext.getDispatcher()).thenReturn(drainDispatcher);
  when(rmContext.getRMApplicationHistoryWriter()).thenReturn(writer);
  when(rmContext.getSystemMetricsPublisher()).thenReturn(publisher);
  ApplicationAttemptId appAttemptId = BuilderUtils.newApplicationAttemptId(
      app_0.getApplicationId(), 1);
  ContainerId containerId = BuilderUtils.newContainerId(appAttemptId, 1);
  Container container = TestUtils.getMockContainer(containerId,
      node_1.getNodeID(), Resources.createResource(2*GB), priorityMap);
  RMContainer rmContainer = new RMContainerImpl(container, appAttemptId,
      node_1.getNodeID(), "user", rmContext);

  Container container_1 = TestUtils.getMockContainer(containerId,
      node_0.getNodeID(), Resources.createResource(1*GB), priorityMap);
  RMContainer rmContainer_1 = new RMContainerImpl(container_1, appAttemptId,
      node_0.getNodeID(), "user", rmContext);

  // no reserved containers
  NodeId unreserveId =
      app_0.getNodeIdToUnreserve(priorityMap, capability,
          cs.getResourceCalculator(), clusterResource);
  assertEquals(null, unreserveId);

  // no reserved containers - reserve then unreserve
  app_0.reserve(node_0, priorityMap, rmContainer_1, container_1);
  app_0.unreserve(node_0, priorityMap);
  unreserveId = app_0.getNodeIdToUnreserve(priorityMap, capability,
      cs.getResourceCalculator(), clusterResource);
  assertEquals(null, unreserveId);

  // no container large enough is reserved
  app_0.reserve(node_0, priorityMap, rmContainer_1, container_1);
  unreserveId = app_0.getNodeIdToUnreserve(priorityMap, capability,
      cs.getResourceCalculator(), clusterResource);
  assertEquals(null, unreserveId);

  // reserve one that is now large enough
  app_0.reserve(node_1, priorityMap, rmContainer, container);
  unreserveId = app_0.getNodeIdToUnreserve(priorityMap, capability,
      cs.getResourceCalculator(), clusterResource);
  assertEquals(node_1.getNodeID(), unreserveId);
}