void startAppAllocationRecording(NodeId nodeID, long currTS, SchedulerApplicationAttempt application) { ApplicationId applicationId = application.getApplicationId(); if (recordingAppActivitiesUntilSpecifiedTime.containsKey(applicationId) && recordingAppActivitiesUntilSpecifiedTime.get(applicationId) > currTS) { appsAllocation.put(applicationId, new AppAllocation(application.getPriority(), nodeID, application.getQueueName())); } if (recordingAppActivitiesUntilSpecifiedTime.containsKey(applicationId) && recordingAppActivitiesUntilSpecifiedTime.get(applicationId) <= currTS) { turnOffActivityMonitoringForApp(applicationId); } }
public static void recordRejectedAppActivityFromLeafQueue( ActivitiesManager activitiesManager, SchedulerNode node, SchedulerApplicationAttempt application, Priority priority, String diagnostic) { String type = "app"; if (node == null || activitiesManager == null) { return; } if (activitiesManager.shouldRecordThisNode(node.getNodeID())) { recordActivity(activitiesManager, node, application.getQueueName(), application.getApplicationId().toString(), priority, ActivityState.REJECTED, diagnostic, type); } finishSkippedAppAllocationRecording(activitiesManager, application.getApplicationId(), ActivityState.REJECTED, diagnostic); }
private void dispatchRequestsForPlacement(ApplicationAttemptId appAttemptId, List<SchedulingRequest> schedulingRequests) { if (schedulingRequests != null && !schedulingRequests.isEmpty()) { SchedulerApplicationAttempt appAttempt = scheduler.getApplicationAttempt(appAttemptId); String queueName = null; if(appAttempt != null) { queueName = appAttempt.getQueueName(); } Resource maxAllocation = scheduler.getMaximumResourceCapability(queueName); // Normalize the Requests before dispatching schedulingRequests.forEach(req -> { Resource reqResource = req.getResourceSizing().getResources(); req.getResourceSizing().setResources( this.scheduler.getNormalizedResource(reqResource, maxAllocation)); }); this.placementDispatcher.dispatch(new BatchedRequests(iteratorType, appAttemptId.getApplicationId(), schedulingRequests, 1)); } }
public RMContainer reserve(SchedulerNode node, SchedulerRequestKey schedulerKey, RMContainer rmContainer, Container container) { try { writeLock.lock(); // Create RMContainer if necessary if (rmContainer == null) { rmContainer = new RMContainerImpl(container, schedulerKey, getApplicationAttemptId(), node.getNodeID(), appSchedulingInfo.getUser(), rmContext); } if (rmContainer.getState() == RMContainerState.NEW) { attemptResourceUsage.incReserved(node.getPartition(), container.getResource()); ((RMContainerImpl) rmContainer).setQueueName(this.getQueueName()); // Reset the re-reservation count resetReReservations(schedulerKey); } else{ // Note down the re-reservation addReReservation(schedulerKey); } commonReserve(node, schedulerKey, rmContainer, container.getResource()); return rmContainer; } finally { writeLock.unlock(); } }
application.getQueueName(), application.getApplicationId().toString(), application.getPriority().toString(), ActivityState.ACCEPTED,
application.getQueueName(), application.getApplicationId().toString(), application.getPriority().toString(), ActivityState.SKIPPED,