当前位置: 首页>>代码示例>>Java>>正文


Java RMContainer.getResourceRequests方法代码示例

本文整理汇总了Java中org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer.getResourceRequests方法的典型用法代码示例。如果您正苦于以下问题:Java RMContainer.getResourceRequests方法的具体用法?Java RMContainer.getResourceRequests怎么用?Java RMContainer.getResourceRequests使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer的用法示例。


在下文中一共展示了RMContainer.getResourceRequests方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: recoverResourceRequestForContainer

import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer; //导入方法依赖的package包/类
/**
 * Recover resource request back from RMContainer when a container is 
 * preempted before AM pulled the same. If container is pulled by
 * AM, then RMContainer will not have resource request to recover.
 * @param rmContainer
 */
protected void recoverResourceRequestForContainer(RMContainer rmContainer) {
  List<ResourceRequest> requests = rmContainer.getResourceRequests();

  // If container state is moved to ACQUIRED, request will be empty.
  if (requests == null) {
    return;
  }
  // Add resource request back to Scheduler.
  SchedulerApplicationAttempt schedulerAttempt 
      = getCurrentAttemptForContainer(rmContainer.getContainerId());
  if (schedulerAttempt != null) {
    schedulerAttempt.recoverResourceRequests(requests);
  }
}
 
开发者ID:naver,项目名称:hadoop,代码行数:21,代码来源:AbstractYarnScheduler.java

示例2: testRecoverRequestAfterPreemption

import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer; //导入方法依赖的package包/类
@Test(timeout=5000)
public void testRecoverRequestAfterPreemption() throws Exception {
  conf.setLong(FairSchedulerConfiguration.WAIT_TIME_BEFORE_KILL, 10);
  
  MockClock clock = new MockClock();
  scheduler.setClock(clock);
  scheduler.init(conf);
  scheduler.start();
  scheduler.reinitialize(conf, resourceManager.getRMContext());

  Priority priority = Priority.newInstance(20);
  String host = "127.0.0.1";
  int GB = 1024;

  // Create Node and raised Node Added event
  RMNode node = MockNodes.newNodeInfo(1,
      Resources.createResource(16 * 1024, 4, 4), 0, host);
  NodeAddedSchedulerEvent nodeEvent = new NodeAddedSchedulerEvent(node);
  scheduler.handle(nodeEvent);

  // Create 3 container requests and place it in ask
  List<ResourceRequest> ask = new ArrayList<ResourceRequest>();
  ResourceRequest nodeLocalRequest = createResourceRequest(GB, 1, 1, host,
      priority.getPriority(), 1, true);
  ResourceRequest rackLocalRequest = createResourceRequest(GB, 1, 1,
      node.getRackName(), priority.getPriority(), 1, true);
  ResourceRequest offRackRequest = createResourceRequest(GB, 1, 1,
      ResourceRequest.ANY, priority.getPriority(), 1, true);
  ask.add(nodeLocalRequest);
  ask.add(rackLocalRequest);
  ask.add(offRackRequest);

  // Create Request and update
  ApplicationAttemptId appAttemptId = createSchedulingRequest("queueA",
      "user1", ask);
  scheduler.update();

  // Sufficient node check-ins to fully schedule containers
  NodeUpdateSchedulerEvent nodeUpdate = new NodeUpdateSchedulerEvent(node);
  scheduler.handle(nodeUpdate);

  assertEquals(1, scheduler.getSchedulerApp(appAttemptId).getLiveContainers()
      .size());
  FSAppAttempt app = scheduler.getSchedulerApp(appAttemptId);

  // ResourceRequest will be empty once NodeUpdate is completed
  Assert.assertNull(app.getResourceRequest(priority, host));

  ContainerId containerId1 = ContainerId.newContainerId(appAttemptId, 1);
  RMContainer rmContainer = app.getRMContainer(containerId1);

  // Create a preempt event and register for preemption
  scheduler.warnOrKillContainer(rmContainer);
  
  // Wait for few clock ticks
  clock.tick(5);
  
  // preempt now
  scheduler.warnOrKillContainer(rmContainer);

  List<ResourceRequest> requests = rmContainer.getResourceRequests();
  // Once recovered, resource request will be present again in app
  Assert.assertEquals(3, requests.size());
  for (ResourceRequest request : requests) {
    Assert.assertEquals(1,
        app.getResourceRequest(priority, request.getResourceName())
            .getNumContainers());
  }

  // Send node heartbeat
  scheduler.update();
  scheduler.handle(nodeUpdate);

  List<Container> containers = scheduler.allocate(appAttemptId,
      Collections.<ResourceRequest> emptyList(),
      Collections.<ContainerId> emptyList(), null, null).getContainers();

  // Now with updated ResourceRequest, a container is allocated for AM.
  Assert.assertTrue(containers.size() == 1);
}
 
开发者ID:naver,项目名称:hadoop,代码行数:81,代码来源:TestFairScheduler.java


注:本文中的org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer.getResourceRequests方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。