/** * 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; }
+ ", requestedSet=" + requestedContainers.size() + ", releasedSet=" + releasedContainers.size() + ", progress=" + req.getProgress());
/** * 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; }
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())); }
float filteredProgress = request.getProgress(); if (Float.isNaN(filteredProgress) || filteredProgress == Float.NEGATIVE_INFINITY || filteredProgress < 0) { .getProgress()));
float filteredProgress = request.getProgress(); if (Float.isNaN(filteredProgress) || filteredProgress == Float.NEGATIVE_INFINITY || filteredProgress < 0) { .getProgress()));