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


Java AllocateResponse.getCompletedContainersStatuses方法代码示例

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


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

示例1: testProcessingNMContainerStatusesOnNMRestart

import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse; //导入方法依赖的package包/类
@Test(timeout = 60000)
public void testProcessingNMContainerStatusesOnNMRestart() throws Exception {
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 1);
  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);

  // 1. Start the cluster-RM,NM,Submit app with 1024MB,Launch & register AM
  MockRM rm1 = new MockRM(conf, memStore);
  rm1.start();
  int nmMemory = 8192;
  int amMemory = 1024;
  int containerMemory = 2048;
  MockNM nm1 =
      new MockNM("127.0.0.1:1234", nmMemory, rm1.getResourceTrackerService());
  nm1.registerNode();

  RMApp app0 = rm1.submitApp(amMemory);
  MockAM am0 = MockRM.launchAndRegisterAM(app0, rm1, nm1);

  // 2. AM sends ResourceRequest for 1 container with memory 2048MB.
  int noOfContainers = 1;
  List<Container> allocateContainers =
      am0.allocateAndWaitForContainers(noOfContainers, containerMemory, nm1);

  // 3. Verify for number of container allocated by RM
  Assert.assertEquals(noOfContainers, allocateContainers.size());
  Container container = allocateContainers.get(0);

  nm1.nodeHeartbeat(am0.getApplicationAttemptId(), 1, ContainerState.RUNNING);
  nm1.nodeHeartbeat(am0.getApplicationAttemptId(), container.getId()
      .getContainerId(), ContainerState.RUNNING);

  rm1.waitForState(app0.getApplicationId(), RMAppState.RUNNING);

  // 4. Verify Memory Usage by cluster, it should be 3072. AM memory +
  // requested memory. 1024 + 2048=3072
  ResourceScheduler rs = rm1.getRMContext().getScheduler();
  int allocatedMB = rs.getRootQueueMetrics().getAllocatedMB();
  Assert.assertEquals(amMemory + containerMemory, allocatedMB);

  // 5. Re-register NM by sending completed container status
  List<NMContainerStatus> nMContainerStatusForApp =
      createNMContainerStatusForApp(am0);
  nm1.registerNode(nMContainerStatusForApp,
      Arrays.asList(app0.getApplicationId()));

  waitForClusterMemory(nm1, rs, amMemory);

  // 6. Verify for Memory Used, it should be 1024
  Assert.assertEquals(amMemory, rs.getRootQueueMetrics().getAllocatedMB());

  // 7. Send AM heatbeat to RM. Allocated response should contain completed
  // container
  AllocateRequest req =
      AllocateRequest.newInstance(0, 0F, new ArrayList<ResourceRequest>(),
          new ArrayList<ContainerId>(), null);
  AllocateResponse allocate = am0.allocate(req);
  List<ContainerStatus> completedContainersStatuses =
      allocate.getCompletedContainersStatuses();
  Assert.assertEquals(noOfContainers, completedContainersStatuses.size());

  // Application clean up should happen Cluster memory used is 0
  nm1.nodeHeartbeat(am0.getApplicationAttemptId(), 1, ContainerState.COMPLETE);
  waitForClusterMemory(nm1, rs, 0);

  rm1.stop();
}
 
开发者ID:naver,项目名称:hadoop,代码行数:68,代码来源:TestApplicationCleanup.java

示例2: testReleasedContainerNotRecovered

import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse; //导入方法依赖的package包/类
@Test (timeout = 50000)
public void testReleasedContainerNotRecovered() throws Exception {
  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);
  rm1 = new MockRM(conf, memStore);
  MockNM nm1 = new MockNM("h1:1234", 15120, rm1.getResourceTrackerService());
  nm1.registerNode();
  rm1.start();

  RMApp app1 = rm1.submitApp(1024);
  final MockAM am1 = MockRM.launchAndRegisterAM(app1, rm1, nm1);

  // Re-start RM
  conf.setInt(YarnConfiguration.RM_NM_EXPIRY_INTERVAL_MS, 8000);
  rm2 = new MockRM(conf, memStore);
  rm2.start();
  nm1.setResourceTrackerService(rm2.getResourceTrackerService());
  rm2.waitForState(app1.getApplicationId(), RMAppState.ACCEPTED);
  am1.setAMRMProtocol(rm2.getApplicationMasterService(), rm2.getRMContext());
  am1.registerAppAttempt(true);

  // try to release a container before the container is actually recovered.
  final ContainerId runningContainer =
      ContainerId.newContainerId(am1.getApplicationAttemptId(), 2);
  am1.allocate(null, Arrays.asList(runningContainer));

  // send container statuses to recover the containers
  List<NMContainerStatus> containerStatuses =
      createNMContainerStatusForApp(am1);
  nm1.registerNode(containerStatuses, null);

  // only the am container should be recovered.
  waitForNumContainersToRecover(1, rm2, am1.getApplicationAttemptId());

  final AbstractYarnScheduler scheduler =
      (AbstractYarnScheduler) rm2.getResourceScheduler();
  // cached release request is cleaned.
  // assertFalse(scheduler.getPendingRelease().contains(runningContainer));

  AllocateResponse response = am1.allocate(null, null);
  // AM gets notified of the completed container.
  boolean receivedCompletedContainer = false;
  for (ContainerStatus status : response.getCompletedContainersStatuses()) {
    if (status.getContainerId().equals(runningContainer)) {
      receivedCompletedContainer = true;
    }
  }
  assertTrue(receivedCompletedContainer);

  GenericTestUtils.waitFor(new Supplier<Boolean>() {
    public Boolean get() {
      // release cache is cleaned up and previous running container is not
      // recovered
      return scheduler.getApplicationAttempt(am1.getApplicationAttemptId())
        .getPendingRelease().isEmpty()
          && scheduler.getRMContainer(runningContainer) == null;
    }
  }, 1000, 20000);
}
 
开发者ID:naver,项目名称:hadoop,代码行数:60,代码来源:TestWorkPreservingRMRestart.java


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