@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); }
/** * Use {@link AllocateRequest#newInstance(int, float, List, List, * ResourceBlacklistRequest, List)} instead * @param responseID responseId * @param appProgress appProgress * @param resourceAsk resourceAsk * @param containersToBeReleased containersToBeReleased * @param resourceBlacklistRequest resourceBlacklistRequest * @param increaseRequests increaseRequests * @return AllocateRequest */ @Deprecated public static AllocateRequest newInstance(int responseID, float appProgress, List<ResourceRequest> resourceAsk, List<ContainerId> containersToBeReleased, ResourceBlacklistRequest resourceBlacklistRequest, List<ContainerResourceIncreaseRequest> increaseRequests) { AllocateRequest allocateRequest = Records.newRecord(AllocateRequest.class); allocateRequest.setResponseId(responseID); allocateRequest.setProgress(appProgress); allocateRequest.setAskList(resourceAsk); allocateRequest.setReleaseList(containersToBeReleased); allocateRequest.setResourceBlacklistRequest(resourceBlacklistRequest); allocateRequest.setIncreaseRequests(increaseRequests); return allocateRequest; }
if (!isNullOrEmpty(request.getAskList())) { splitResourceRequests(request.getAskList()); AllocateRequest newRequest = findOrCreateAllocateRequestForSubCluster( entry.getKey(), request, requestMap); newRequest.getAskList().addAll(entry.getValue()); if (request.getResourceBlacklistRequest() != null) { if (!isNullOrEmpty( request.getResourceBlacklistRequest().getBlacklistAdditions())) { for (String resourceName : request.getResourceBlacklistRequest() .getBlacklistAdditions()) { SubClusterId subClusterId = getSubClusterForNode(resourceName); findOrCreateAllocateRequestForSubCluster(subClusterId, request, requestMap); newRequest.getResourceBlacklistRequest().getBlacklistAdditions() .add(resourceName); request.getResourceBlacklistRequest().getBlacklistRemovals())) { for (String resourceName : request.getResourceBlacklistRequest() .getBlacklistRemovals()) { SubClusterId subClusterId = getSubClusterForNode(resourceName); findOrCreateAllocateRequestForSubCluster(subClusterId, request, requestMap); newRequest.getResourceBlacklistRequest().getBlacklistRemovals() .add(resourceName);
protected AllocateRequest createAllocateRequest(List<ResourceRequest> ask, List<ContainerId> toRelease) { AllocateRequest allocateRequest = recordFactory.newRecordInstance(AllocateRequest.class); allocateRequest.setResponseId(RESPONSE_ID ++); allocateRequest.setAskList(ask); allocateRequest.setReleaseList(toRelease); return allocateRequest; }
@Public @Unstable public static AllocateRequest newInstance(int responseID, float appProgress, List<ResourceRequest> resourceAsk, List<ContainerId> containersToBeReleased, List<UpdateContainerRequest> updateRequests, ResourceBlacklistRequest resourceBlacklistRequest) { AllocateRequest allocateRequest = Records.newRecord(AllocateRequest.class); allocateRequest.setResponseId(responseID); allocateRequest.setProgress(appProgress); allocateRequest.setAskList(resourceAsk); allocateRequest.setReleaseList(containersToBeReleased); allocateRequest.setResourceBlacklistRequest(resourceBlacklistRequest); allocateRequest.setUpdateRequests(updateRequests); return allocateRequest; }
if ((request.getResponseId() + 1) == lastResponse.getResponseId()) { } else if (request.getResponseId() + 1 < lastResponse.getResponseId()) { String message = "Invalid responseId in AllocateRequest from application attempt: " float filteredProgress = request.getProgress(); if (Float.isNaN(filteredProgress) || filteredProgress == Float.NEGATIVE_INFINITY || filteredProgress < 0) { request.setProgress(0); } else if (filteredProgress > 1 || filteredProgress == Float.POSITIVE_INFINITY) { request.setProgress(1); .getProgress())); List<ResourceRequest> ask = request.getAskList(); List<ContainerId> release = request.getReleaseList(); request.getResourceBlacklistRequest(); List<String> blacklistAdditions = (blacklistRequest != null) ?
request.setResponseId(requestId.get()); request.setAskList(requestedContainers); request.setReleaseList(release); request.setProgress(applicationProgress);
/** * Check to see if an AllocateRequest exists in the Map for the specified sub * cluster. If not found, create a new one, copy the value of responseId and * progress from the orignialAMRequest, save it in the specified Map and * return the new instance. If found, just return the old instance. */ private static AllocateRequest findOrCreateAllocateRequestForSubCluster( SubClusterId subClusterId, AllocateRequest originalAMRequest, Map<SubClusterId, AllocateRequest> requestMap) { AllocateRequest newRequest = null; if (requestMap.containsKey(subClusterId)) { newRequest = requestMap.get(subClusterId); } else { newRequest = createAllocateRequest(); newRequest.setResponseId(originalAMRequest.getResponseId()); newRequest.setProgress(originalAMRequest.getProgress()); requestMap.put(subClusterId, newRequest); } return newRequest; }
@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()); } }
/** * Create an empty AllocateRequest instance. */ private static AllocateRequest createAllocateRequest() { AllocateRequest request = RECORD_FACTORY.newRecordInstance(AllocateRequest.class); request.setAskList(new ArrayList<ResourceRequest>()); request.setReleaseList(new ArrayList<ContainerId>()); ResourceBlacklistRequest blackList = ResourceBlacklistRequest.newInstance(null, null); blackList.setBlacklistAdditions(new ArrayList<String>()); blackList.setBlacklistRemovals(new ArrayList<String>()); request.setResourceBlacklistRequest(blackList); request.setUpdateRequests(new ArrayList<UpdateContainerRequest>()); return request; }
.partitionAskList(request.getAllocateRequest().getAskList()); request.getAllocateRequest().getResourceBlacklistRequest(), partitionedAsks.getOpportunistic(), applicationAttemptId, oppContainerContext, rmIdentifier, appSubmitter); request.getAllocateRequest().setAskList(partitionedAsks.getGuaranteed());
/** * 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; }
@Override public AllocateResponse allocate(AllocateRequest request) throws YarnException, IOException { if (this.failover) { this.failover = false; throw new ApplicationMasterNotRegisteredException("Mock RM restarted"); } if (this.responseIdReset != -1) { String errorMessage = AMRMClientUtils.assembleInvalidResponseIdExceptionMessage(null, this.responseIdReset, request.getResponseId()); this.responseIdReset = -1; throw new InvalidApplicationMasterRequestException(errorMessage); } this.lastAsk = request.getAskList(); this.lastRelease = request.getReleaseList(); this.lastBlacklistAdditions = request.getResourceBlacklistRequest().getBlacklistAdditions(); this.lastBlacklistRemovals = request.getResourceBlacklistRequest().getBlacklistRemovals(); return AllocateResponse.newInstance(request.getResponseId() + 1, null, null, new ArrayList<NodeReport>(), Resource.newInstance(0, 0), null, 0, null, null); }
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); }
private void handleProgress(ApplicationAttemptId appAttemptId, AllocateRequest request) { //filter illegal progress values float filteredProgress = request.getProgress(); if (Float.isNaN(filteredProgress) || filteredProgress == Float.NEGATIVE_INFINITY || filteredProgress < 0) { request.setProgress(0); } else if (filteredProgress > 1 || filteredProgress == Float.POSITIVE_INFINITY) { request.setProgress(1); } // Send the status update to the appAttempt. getRmContext().getDispatcher().getEventHandler().handle( new RMAppAttemptStatusupdateEvent(appAttemptId, request .getProgress(), request.getTrackingUrl())); }
List<ResourceRequest> ask = request.getAskList(); List<ContainerId> release = request.getReleaseList(); request.getResourceBlacklistRequest(); List<String> blacklistAdditions = (blacklistRequest != null) ? try { allocation = getScheduler().allocate(appAttemptId, ask, request.getSchedulingRequests(), release, blacklistAdditions, blacklistRemovals, containerUpdateRequests); } catch (SchedulerInvalidResoureRequestException e) {
/** * Set the <code>responseId</code> of the request. * @see AllocateRequest#setResponseId(int) * @param responseId <code>responseId</code> of the request * @return {@link AllocateRequestBuilder} */ @Public @Stable public AllocateRequestBuilder responseId(int responseId) { allocateRequest.setResponseId(responseId); return this; }
@Override public AllocateResponse allocate(AllocateRequest request) throws YarnException, IOException { lastAsk = request.getAskList(); for (ResourceRequest req : lastAsk) { if (ResourceRequest.ANY.equals(req.getResourceName())) { Priority priority = req.getPriority(); if (priority.equals(RMContainerAllocator.PRIORITY_MAP)) { lastAnyAskMap = req.getNumContainers(); } else if (priority.equals(RMContainerAllocator.PRIORITY_REDUCE)){ lastAnyAskReduce = req.getNumContainers(); } } } AllocateResponse response = AllocateResponse.newInstance( request.getResponseId(), containersToComplete, containersToAllocate, Collections.<NodeReport>emptyList(), Resource.newInstance(512000, 1024), null, 10, null, Collections.<NMToken>emptyList()); // RM will always ensure that a default priority is sent to AM response.setApplicationPriority(Priority.newInstance(0)); containersToComplete.clear(); containersToAllocate.clear(); return response; }
request.setResponseId(rmRequestId.incrementAndGet()); request.setApplicationAttemptId(appAttemptId); request.addAllAsks(requestedContainers); request.addAllReleases(releasedContainers);
/** * Set the <code>progress</code> of the request. * @see AllocateRequest#setProgress(float) * @param progress <code>progress</code> of the request * @return {@link AllocateRequestBuilder} */ @Public @Stable public AllocateRequestBuilder progress(float progress) { allocateRequest.setProgress(progress); return this; }