@Public @Stable public static AllocateRequest newInstance(int responseID, float appProgress, List<ResourceRequest> resourceAsk, List<ContainerId> containersToBeReleased, ResourceBlacklistRequest resourceBlacklistRequest) { return newInstance(responseID, appProgress, resourceAsk, containersToBeReleased, null, resourceBlacklistRequest); }
@Public @Stable public static AllocateRequest newInstance(int responseID, float appProgress, List<ResourceRequest> resourceAsk, List<ContainerId> containersToBeReleased, ResourceBlacklistRequest resourceBlacklistRequest) { return newInstance(responseID, appProgress, resourceAsk, containersToBeReleased, resourceBlacklistRequest, null); }
@Public @Stable public static AllocateRequest newInstance(int responseID, float appProgress, List<ResourceRequest> resourceAsk, List<ContainerId> containersToBeReleased, ResourceBlacklistRequest resourceBlacklistRequest) { return newInstance(responseID, appProgress, resourceAsk, containersToBeReleased, resourceBlacklistRequest, null); }
/** * Ask RM to allocate given no. of containers to this Application Master * @param requestedContainers Containers to ask for from RM * @return Response from RM to AM with allocated containers * @throws YarnException, IOException */ public static AllocateResponse sendContainerAskToRM( AtomicInteger rmRequestID, ApplicationAttemptId appAttemptID, ApplicationMasterProtocol resourceManager, List<ResourceRequest> requestedContainers, List<ContainerId> releasedContainers, float progress) throws YarnException, IOException { AllocateRequest req = AllocateRequest.newInstance( rmRequestID.incrementAndGet(), progress, requestedContainers, releasedContainers, null); LOG.info("Sending request to RM for containers" + ", requestedSet=" + requestedContainers.size() + ", releasedSet=" + releasedContainers.size() + ", progress=" + req.getProgress()); for (ResourceRequest rsrcReq : requestedContainers) { LOG.info("Requested container ask: " + rsrcReq.toString()); } for (ContainerId id : releasedContainers) { LOG.info("Released container, id=" + id.getId()); } AllocateResponse resp = resourceManager.allocate(req); return resp; }
List<org.apache.hadoop.yarn.api.records.ContainerId> releasedContainers, float progress) throws YarnException, IOException { AllocateRequest req = AllocateRequest.newInstance( rmRequestID.incrementAndGet(), progress, requestedContainers, releasedContainers, null);
private AllocateRequest getAllocateRequest() { // Need to create a new one every time because rather than directly // referring the lists, the protobuf impl makes a copy of the lists return AllocateRequest.newInstance(responseId, 0, asks, releases, ResourceBlacklistRequest.newInstance(blacklistAdditions, blacklistRemoval)); }
public AllocateResponse allocate( List<ResourceRequest> resourceRequest, List<ContainerId> releases) throws Exception { final AllocateRequest req = AllocateRequest.newInstance(0, 0F, resourceRequest, releases, null); return allocate(req); }
public AllocateResponse sendContainerResizingRequest( List<UpdateContainerRequest> updateRequests) throws Exception { final AllocateRequest req = AllocateRequest.newInstance(0, 0F, null, null, updateRequests, null); return allocate(req); }
public AllocateResponse sendContainerUpdateRequest( List<UpdateContainerRequest> updateRequests) throws Exception { final AllocateRequest req = AllocateRequest.newInstance(0, 0F, null, null, updateRequests, null); return allocate(req); }
public AllocateResponse allocate( List<ResourceRequest> resourceRequest, List<ContainerId> releases) throws Exception { final AllocateRequest req = AllocateRequest.newInstance(0, 0F, resourceRequest, releases, null); if (!schedulingRequests.isEmpty()) { req.setSchedulingRequests(schedulingRequests); schedulingRequests.clear(); } return allocate(req); }
@Test(expected = Exception.class) public void testAllocateWithoutRegister() throws YarnException, IOException, InterruptedException { allocateAsync(AllocateRequest.newInstance(0, 0, null, null, null), callback, attemptId); }
public AllocateResponse allocate(List<ResourceRequest> resourceRequest, List<SchedulingRequest> newSchedulingRequests, List<ContainerId> releases) throws Exception { final AllocateRequest req = AllocateRequest.newInstance(0, 0F, resourceRequest, releases, null); if (newSchedulingRequests != null) { addSchedulingRequest(newSchedulingRequests); } if (!schedulingRequests.isEmpty()) { req.setSchedulingRequests(schedulingRequests); schedulingRequests.clear(); } return allocate(req); }
@Test public void testAllcoateRequestWithoutIncrease() { AllocateRequest r = AllocateRequest.newInstance(123, 0f, null, null, null, null); // serde AllocateRequestProto p = ((AllocateRequestPBImpl) r).getProto(); r = new AllocateRequestPBImpl(p); // check value Assert.assertEquals(123, r.getResponseId()); Assert.assertEquals(0, r.getIncreaseRequests().size()); } }
@Test public void testAllcoateRequestWithIncrease() { List<ContainerResourceIncreaseRequest> incRequests = new ArrayList<ContainerResourceIncreaseRequest>(); for (int i = 0; i < 3; i++) { incRequests.add(ContainerResourceIncreaseRequest.newInstance(null, Resource.newInstance(0, i))); } AllocateRequest r = AllocateRequest.newInstance(123, 0f, null, null, null, incRequests); // serde AllocateRequestProto p = ((AllocateRequestPBImpl) r).getProto(); r = new AllocateRequestPBImpl(p); // check value Assert.assertEquals(123, r.getResponseId()); Assert.assertEquals(incRequests.size(), r.getIncreaseRequests().size()); for (int i = 0; i < incRequests.size(); i++) { Assert.assertEquals(r.getIncreaseRequests().get(i).getCapability() .getVirtualCores(), incRequests.get(i).getCapability() .getVirtualCores()); } }
this.relayer.allocate(AllocateRequest.newInstance(0, 0, asks, null, null));
@Test(timeout = 5000) public void testBasicUsage() throws YarnException, IOException, InterruptedException { launchUAM(attemptId); registerApplicationMaster( RegisterApplicationMasterRequest.newInstance(null, 0, null), attemptId); allocateAsync(AllocateRequest.newInstance(0, 0, null, null, null), callback, attemptId); // Wait for outstanding async allocate callback waitForCallBackCountAndCheckZeroPending(callback, 1); finishApplicationMaster( FinishApplicationMasterRequest.newInstance(null, null, null), attemptId); }
@Test(timeout = 5000) public void testUAMReAttach() throws YarnException, IOException, InterruptedException { launchUAM(attemptId); registerApplicationMaster( RegisterApplicationMasterRequest.newInstance(null, 0, null), attemptId); allocateAsync(AllocateRequest.newInstance(0, 0, null, null, null), callback, attemptId); // Wait for outstanding async allocate callback waitForCallBackCountAndCheckZeroPending(callback, 1); MockResourceManagerFacade rmProxy = uam.getRMProxy(); uam = new TestableUnmanagedApplicationManager(conf, attemptId.getApplicationId(), null, "submitter", "appNameSuffix", true); uam.setRMProxy(rmProxy); reAttachUAM(null, attemptId); registerApplicationMaster( RegisterApplicationMasterRequest.newInstance(null, 0, null), attemptId); allocateAsync(AllocateRequest.newInstance(0, 0, null, null, null), callback, attemptId); // Wait for outstanding async allocate callback waitForCallBackCountAndCheckZeroPending(callback, 2); finishApplicationMaster( FinishApplicationMasterRequest.newInstance(null, null, null), attemptId); }
@Test(timeout = 5000) public void testReRegister() throws YarnException, IOException, InterruptedException { launchUAM(attemptId); registerApplicationMaster( RegisterApplicationMasterRequest.newInstance(null, 0, null), attemptId); uam.setShouldReRegisterNext(); allocateAsync(AllocateRequest.newInstance(0, 0, null, null, null), callback, attemptId); // Wait for outstanding async allocate callback waitForCallBackCountAndCheckZeroPending(callback, 1); uam.setShouldReRegisterNext(); finishApplicationMaster( FinishApplicationMasterRequest.newInstance(null, null, null), attemptId); }
@Test public void testAMRMDecommissioningNodes() throws Exception { MockNM nm1 = rm.registerNode("127.0.0.1:1234", 10000); MockNM nm2 = rm.registerNode("127.0.0.2:1234", 10000); rm.drainEvents(); RMApp app1 = rm.submitApp(2000); // Trigger the scheduling so the AM gets 'launched' on nm1 nm1.nodeHeartbeat(true); RMAppAttempt attempt1 = app1.getCurrentAppAttempt(); MockAM am1 = rm.sendAMLaunched(attempt1.getAppAttemptId()); // register AM returns no unusable node am1.registerAppAttempt(); Integer decommissioningTimeout = 600; syncNodeGracefulDecommission(nm2, decommissioningTimeout); AllocateRequest allocateRequest1 = AllocateRequest.newInstance(0, 0F, null, null, null); AllocateResponse response1 = allocate(attempt1.getAppAttemptId(), allocateRequest1); List<NodeReport> updatedNodes = response1.getUpdatedNodes(); Assert.assertEquals(1, updatedNodes.size()); NodeReport nr = updatedNodes.iterator().next(); Assert.assertEquals( decommissioningTimeout, nr.getDecommissioningTimeout()); Assert.assertEquals( NodeUpdateType.NODE_DECOMMISSIONING, nr.getNodeUpdateType()); }
AllocateRequest.newInstance(0, 0F, null, null, null); Assert.assertTrue(response.getAMCommand() == null); allocateRequest = AllocateRequest.newInstance(response.getResponseId(), 0F, null, null, null); allocateRequest = AllocateRequest.newInstance(0, 0F, null, null, null);