diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateRequest.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateRequest.java index f7ce127..6447fc2 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateRequest.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateRequest.java @@ -66,8 +66,10 @@ public static AllocateRequest newInstance(int responseID, float appProgress, List resourceAsk, List containersToBeReleased, ResourceBlacklistRequest resourceBlacklistRequest) { - return newInstance(responseID, appProgress, resourceAsk, - containersToBeReleased, resourceBlacklistRequest, null); + return AllocateRequest.newBuilder().responseId(responseID) + .progress(appProgress).askList(resourceAsk) + .releaseList(containersToBeReleased) + .resourceBlacklistRequest(resourceBlacklistRequest).build(); } @Public @@ -77,14 +79,12 @@ public static AllocateRequest newInstance(int responseID, float appProgress, List containersToBeReleased, ResourceBlacklistRequest resourceBlacklistRequest, List updateRequests) { - 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; + return AllocateRequest.newBuilder().responseId(responseID) + .progress(appProgress).askList(resourceAsk) + .releaseList(containersToBeReleased) + .resourceBlacklistRequest(resourceBlacklistRequest) + .updateRequests(updateRequests) + .build(); } /** @@ -211,4 +211,71 @@ public abstract void setResourceBlacklistRequest( @Unstable public abstract void setUpdateRequests( List updateRequests); -} + + public static AllocateRequestBuilder newBuilder() { + return new AllocateRequestBuilder(); + } + + /** + * Class to construct instances of AllocateRequest with specific options. + */ + @Public + @Stable + public static final class AllocateRequestBuilder { + private AllocateRequest allocateRequest = + Records.newRecord(AllocateRequest.class); + + private AllocateRequestBuilder() { + } + + @Public + @Stable + public AllocateRequestBuilder responseId(int responseId) { + allocateRequest.setResponseId(responseId); + return this; + } + + @Public + @Stable + public AllocateRequestBuilder progress(float progress) { + allocateRequest.setProgress(progress); + return this; + } + + @Public + @Stable + public AllocateRequestBuilder askList(List askList) { + allocateRequest.setAskList(askList); + return this; + } + + @Public + @Stable + public AllocateRequestBuilder releaseList(List releaseList) { + allocateRequest.setReleaseList(releaseList); + return this; + } + + @Public + @Stable + public AllocateRequestBuilder resourceBlacklistRequest( + ResourceBlacklistRequest resourceBlacklistRequest) { + allocateRequest.setResourceBlacklistRequest(resourceBlacklistRequest); + return this; + } + + @Public + @Unstable + public AllocateRequestBuilder updateRequests( + List updateRequests) { + allocateRequest.setUpdateRequests(updateRequests); + return this; + } + + @Public + @Stable + public AllocateRequest build() { + return allocateRequest; + } + } +} \ No newline at end of file diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateResponse.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateResponse.java index 69089ee..fcb9f13 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateResponse.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateResponse.java @@ -84,17 +84,12 @@ public static AllocateResponse newInstance(int responseId, List allocatedContainers, List updatedNodes, Resource availResources, AMCommand command, int numClusterNodes, PreemptionMessage preempt, List nmTokens) { - AllocateResponse response = Records.newRecord(AllocateResponse.class); - response.setNumClusterNodes(numClusterNodes); - response.setResponseId(responseId); - response.setCompletedContainersStatuses(completedContainers); - response.setAllocatedContainers(allocatedContainers); - response.setUpdatedNodes(updatedNodes); - response.setAvailableResources(availResources); - response.setAMCommand(command); - response.setPreemptionMessage(preempt); - response.setNMTokens(nmTokens); - return response; + return AllocateResponse.newBuilder().numClusterNodes(numClusterNodes) + .responseId(responseId) + .completedContainersStatuses(completedContainers) + .allocatedContainers(allocatedContainers).updatedNodes(updatedNodes) + .availableResources(availResources).amCommand(command) + .preemptionMessage(preempt).nmTokens(nmTokens).build(); } @Public @@ -105,11 +100,13 @@ public static AllocateResponse newInstance(int responseId, Resource availResources, AMCommand command, int numClusterNodes, PreemptionMessage preempt, List nmTokens, List updatedContainers) { - AllocateResponse response = newInstance(responseId, completedContainers, - allocatedContainers, updatedNodes, availResources, command, - numClusterNodes, preempt, nmTokens); - response.setUpdatedContainers(updatedContainers); - return response; + return AllocateResponse.newBuilder().numClusterNodes(numClusterNodes) + .responseId(responseId) + .completedContainersStatuses(completedContainers) + .allocatedContainers(allocatedContainers).updatedNodes(updatedNodes) + .availableResources(availResources).amCommand(command) + .preemptionMessage(preempt).nmTokens(nmTokens) + .updatedContainers(updatedContainers).build(); } @Private @@ -120,12 +117,13 @@ public static AllocateResponse newInstance(int responseId, Resource availResources, AMCommand command, int numClusterNodes, PreemptionMessage preempt, List nmTokens, Token amRMToken, List updatedContainers) { - AllocateResponse response = - newInstance(responseId, completedContainers, allocatedContainers, - updatedNodes, availResources, command, numClusterNodes, preempt, - nmTokens, updatedContainers); - response.setAMRMToken(amRMToken); - return response; + return AllocateResponse.newBuilder().numClusterNodes(numClusterNodes) + .responseId(responseId) + .completedContainersStatuses(completedContainers) + .allocatedContainers(allocatedContainers).updatedNodes(updatedNodes) + .availableResources(availResources).amCommand(command) + .preemptionMessage(preempt).nmTokens(nmTokens) + .updatedContainers(updatedContainers).amRmToken(amRMToken).build(); } @Public @@ -136,13 +134,14 @@ public static AllocateResponse newInstance(int responseId, Resource availResources, AMCommand command, int numClusterNodes, PreemptionMessage preempt, List nmTokens, Token amRMToken, List updatedContainers, String collectorAddr) { - AllocateResponse response = - newInstance(responseId, completedContainers, allocatedContainers, - updatedNodes, availResources, command, numClusterNodes, preempt, - nmTokens, updatedContainers); - response.setAMRMToken(amRMToken); - response.setCollectorAddr(collectorAddr); - return response; + return AllocateResponse.newBuilder().numClusterNodes(numClusterNodes) + .responseId(responseId) + .completedContainersStatuses(completedContainers) + .allocatedContainers(allocatedContainers).updatedNodes(updatedNodes) + .availableResources(availResources).amCommand(command) + .preemptionMessage(preempt).nmTokens(nmTokens) + .updatedContainers(updatedContainers).amRmToken(amRMToken) + .collectorAddr(collectorAddr).build(); } /** @@ -370,4 +369,137 @@ public abstract void setUpdatedContainers( @Unstable public void setUpdateErrors(List updateErrors) { } + + @Public + @Stable + public static AllocateResponseBuilder newBuilder() { + return new AllocateResponseBuilder(); + } + + /** + * Class to construct instances of AllocateResponse with specific options. + */ + @Public + @Stable + public static final class AllocateResponseBuilder { + private AllocateResponse allocateResponse = + Records.newRecord(AllocateResponse.class); + + private AllocateResponseBuilder() { + allocateResponse.setApplicationPriority(Priority.newInstance(0)); + } + + @Public + @Stable + public AllocateResponseBuilder amCommand(AMCommand amCommand) { + allocateResponse.setAMCommand(amCommand); + return this; + } + + @Public + @Stable + public AllocateResponseBuilder responseId(int responseId) { + allocateResponse.setResponseId(responseId); + return this; + } + + @Public + @Stable + public AllocateResponseBuilder allocatedContainers( + List allocatedContainers) { + allocateResponse.setAllocatedContainers(allocatedContainers); + return this; + } + + @Public + @Stable + public AllocateResponseBuilder availableResources( + Resource availableResources) { + allocateResponse.setAvailableResources(availableResources); + return this; + } + + @Public + @Stable + public AllocateResponseBuilder completedContainersStatuses( + List completedContainersStatuses) { + allocateResponse + .setCompletedContainersStatuses(completedContainersStatuses); + return this; + } + + @Public + @Stable + public AllocateResponseBuilder updatedNodes( + List updatedNodes) { + allocateResponse.setUpdatedNodes(updatedNodes); + return this; + } + + @Public + @Stable + public AllocateResponseBuilder numClusterNodes(int numClusterNodes) { + allocateResponse.setNumClusterNodes(numClusterNodes); + return this; + } + + @Public + @Evolving + public AllocateResponseBuilder preemptionMessage( + PreemptionMessage preemptionMessage) { + allocateResponse.setPreemptionMessage(preemptionMessage); + return this; + } + + @Public + @Stable + public AllocateResponseBuilder nmTokens(List nmTokens) { + allocateResponse.setNMTokens(nmTokens); + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder updatedContainers( + List updatedContainers) { + allocateResponse.setUpdatedContainers(updatedContainers); + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder amRmToken(Token amRmToken) { + allocateResponse.setAMRMToken(amRmToken); + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder applicationPriority( + Priority applicationPriority) { + allocateResponse.setApplicationPriority(applicationPriority); + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder collectorAddr(String collectorAddr) { + allocateResponse.setCollectorAddr(collectorAddr); + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder updateErrors( + List updateErrors) { + allocateResponse.setUpdateErrors(updateErrors); + return this; + } + + @Public + @Stable + public AllocateResponse build() { + return allocateResponse; + } + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ResourceRequest.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ResourceRequest.java index 2d6f0f4..fe429a4 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ResourceRequest.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ResourceRequest.java @@ -63,15 +63,18 @@ @Stable public static ResourceRequest newInstance(Priority priority, String hostName, Resource capability, int numContainers) { - return newInstance(priority, hostName, capability, numContainers, true); + return ResourceRequest.newBuilder().priority(priority) + .resourceName(hostName).capability(capability) + .numContainers(numContainers).build(); } @Public @Stable public static ResourceRequest newInstance(Priority priority, String hostName, Resource capability, int numContainers, boolean relaxLocality) { - return newInstance(priority, hostName, capability, numContainers, - relaxLocality, null); + return ResourceRequest.newBuilder().priority(priority) + .resourceName(hostName).capability(capability) + .numContainers(numContainers).relaxLocality(relaxLocality).build(); } @Public @@ -79,8 +82,10 @@ public static ResourceRequest newInstance(Priority priority, String hostName, public static ResourceRequest newInstance(Priority priority, String hostName, Resource capability, int numContainers, boolean relaxLocality, String labelExpression) { - return newInstance(priority, hostName, capability, numContainers, - relaxLocality, labelExpression, ExecutionTypeRequest.newInstance()); + return ResourceRequest.newBuilder().priority(priority) + .resourceName(hostName).capability(capability) + .numContainers(numContainers).relaxLocality(relaxLocality) + .nodeLabelExpression(labelExpression).build(); } @Public @@ -88,15 +93,101 @@ public static ResourceRequest newInstance(Priority priority, String hostName, public static ResourceRequest newInstance(Priority priority, String hostName, Resource capability, int numContainers, boolean relaxLocality, String labelExpression, ExecutionTypeRequest executionTypeRequest) { - ResourceRequest request = Records.newRecord(ResourceRequest.class); - request.setPriority(priority); - request.setResourceName(hostName); - request.setCapability(capability); - request.setNumContainers(numContainers); - request.setRelaxLocality(relaxLocality); - request.setNodeLabelExpression(labelExpression); - request.setExecutionTypeRequest(executionTypeRequest); - return request; + return ResourceRequest.newBuilder().priority(priority) + .resourceName(hostName).capability(capability) + .numContainers(numContainers).relaxLocality(relaxLocality) + .nodeLabelExpression(labelExpression) + .executionTypeRequest(executionTypeRequest).build(); + } + + @Public + @Stable + public static ResourceRequestBuilder newBuilder() { + return new ResourceRequestBuilder(); + } + + /** + * Class to construct instances of ResourceRequest with specific options. + */ + @Public + @Stable + public static final class ResourceRequestBuilder { + private ResourceRequest resourceRequest = + Records.newRecord(ResourceRequest.class); + + private ResourceRequestBuilder() { + resourceRequest.setResourceName(ANY); + resourceRequest.setNumContainers(1); + resourceRequest.setPriority(Priority.newInstance(0)); + resourceRequest.setRelaxLocality(true); + resourceRequest.setExecutionTypeRequest( + ExecutionTypeRequest.newInstance()); + } + + @Public + @Stable + public ResourceRequestBuilder priority(Priority priority) { + resourceRequest.setPriority(priority); + return this; + } + + @Public + @Stable + public ResourceRequestBuilder resourceName(String resourceName) { + resourceRequest.setResourceName(resourceName); + return this; + } + + @Public + @Stable + public ResourceRequestBuilder capability(Resource capability) { + resourceRequest.setCapability(capability); + return this; + } + + @Public + @Stable + public ResourceRequestBuilder numContainers(int numContainers) { + resourceRequest.setNumContainers(numContainers); + return this; + } + + @Public + @Stable + public ResourceRequestBuilder relaxLocality(boolean relaxLocality) { + resourceRequest.setRelaxLocality(relaxLocality); + return this; + } + + @Public + @Evolving + public ResourceRequestBuilder nodeLabelExpression( + String nodeLabelExpression) { + resourceRequest.setNodeLabelExpression(nodeLabelExpression); + return this; + } + + @Public + @Evolving + public ResourceRequestBuilder executionTypeRequest( + ExecutionTypeRequest executionTypeRequest) { + resourceRequest.setExecutionTypeRequest(executionTypeRequest); + return this; + } + + @Public + @Evolving + public ResourceRequestBuilder allocationRequestId( + long allocationRequestId) { + resourceRequest.setAllocationRequestId(allocationRequestId); + return this; + } + + @Public + @Stable + public ResourceRequest build() { + return resourceRequest; + } } @Public diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/AMRMClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/AMRMClient.java index 2990c05..beb7873 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/AMRMClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/AMRMClient.java @@ -106,14 +106,14 @@ protected AMRMClient(String name) { * All getters return immutable values. */ public static class ContainerRequest { - final Resource capability; - final List nodes; - final List racks; - final Priority priority; - final long allocationRequestId; - final boolean relaxLocality; - final String nodeLabelsExpression; - final ExecutionTypeRequest executionTypeRequest; + private Resource capability; + private List nodes; + private List racks; + private Priority priority; + private long allocationRequestId; + private boolean relaxLocality; + private String nodeLabelsExpression; + private ExecutionTypeRequest executionTypeRequest; /** * Instantiates a {@link ContainerRequest} with the given constraints and @@ -326,7 +326,9 @@ public ContainerRequest(Resource capability, String[] nodes, String[] racks, this.nodeLabelsExpression = nodeLabelsExpression; this.executionTypeRequest = executionTypeRequest; } - + + private ContainerRequest() {}; + public Resource getCapability() { return capability; } @@ -368,8 +370,83 @@ public String toString() { .append("]"); return sb.toString(); } + + public static ContainerRequestBuilder newBuilder() { + return new ContainerRequestBuilder(); + } + + /** + * Class to construct instances of ContainerRequestBuilder with specific + * options. + */ + public static final class ContainerRequestBuilder { + private ContainerRequest containerRequest = new ContainerRequest(); + + public ContainerRequestBuilder capability(Resource capability) { + containerRequest.capability = capability; + return this; + } + + public ContainerRequestBuilder nodes(String[] nodes) { + containerRequest.nodes = + (nodes != null ? ImmutableList.copyOf(nodes): null); + return this; + } + + public ContainerRequestBuilder racks(String[] racks) { + containerRequest.racks = + (racks != null ? ImmutableList.copyOf(racks) : null); + return this; + } + + public ContainerRequestBuilder priority(Priority priority) { + containerRequest.priority = priority; + return this; + } + + public ContainerRequestBuilder allocationRequestId( + long allocationRequestId) { + containerRequest.allocationRequestId = allocationRequestId; + return this; + } + + public ContainerRequestBuilder relaxLocality(boolean relaxLocality) { + containerRequest.relaxLocality = relaxLocality; + return this; + } + + public ContainerRequestBuilder nodeLabelsExpression( + String nodeLabelsExpression) { + containerRequest.nodeLabelsExpression = nodeLabelsExpression; + return this; + } + + public ContainerRequestBuilder executionTypeRequest( + ExecutionTypeRequest executionTypeRequest) { + containerRequest.executionTypeRequest = executionTypeRequest; + return this; + } + + public ContainerRequest build() { + // Validate request + Preconditions.checkArgument(containerRequest.capability != null, + "The Resource to be requested for each container " + + "should not be null "); + Preconditions.checkArgument(containerRequest.priority != null, + "The priority at which to request containers should not be null "); + Preconditions.checkArgument( + !(!containerRequest.relaxLocality + && (containerRequest.racks == null + || containerRequest.racks.size() == 0) + && (containerRequest.nodes == null + || containerRequest.nodes.size() == 0)), + "Can't turn off locality relaxation on a " + + "request with no location constraints"); + return containerRequest; + } + } } - + /** * Register the application master. This must be called before any * other interaction diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java index 3221661..68fb82e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/AMRMClientImpl.java @@ -112,10 +112,10 @@ ResourceRequestInfo(Long allocationRequestId, Priority priority, String resourceName, Resource capability, boolean relaxLocality) { - remoteRequest = ResourceRequest.newInstance(priority, resourceName, - capability, 0); - remoteRequest.setAllocationRequestId(allocationRequestId); - remoteRequest.setRelaxLocality(relaxLocality); + remoteRequest = ResourceRequest.newBuilder().priority(priority) + .resourceName(resourceName).capability(capability).numContainers(0) + .allocationRequestId(allocationRequestId) + .relaxLocality(relaxLocality).build(); containerRequests = new LinkedHashSet(); } } @@ -279,10 +279,11 @@ public AllocateResponse allocate(float progressIndicator) ResourceBlacklistRequest blacklistRequest = ResourceBlacklistRequest.newInstance(blacklistToAdd, blacklistToRemove); - - allocateRequest = - AllocateRequest.newInstance(lastResponseId, progressIndicator, - askList, releaseList, blacklistRequest, updateList); + + allocateRequest = AllocateRequest.newBuilder() + .responseId(lastResponseId).progress(progressIndicator) + .askList(askList).resourceBlacklistRequest(blacklistRequest) + .releaseList(releaseList).updateRequests(updateList).build(); // clear blacklistAdditions and blacklistRemovals before // unsynchronized part blacklistAdditions.clear(); @@ -415,11 +416,13 @@ public AllocateResponse allocate(float progressIndicator) for(ResourceRequest r : ask) { // create a copy of ResourceRequest as we might change it while the // RPC layer is using it to send info across - ResourceRequest rr = ResourceRequest.newInstance(r.getPriority(), - r.getResourceName(), r.getCapability(), r.getNumContainers(), - r.getRelaxLocality(), r.getNodeLabelExpression(), - r.getExecutionTypeRequest()); - rr.setAllocationRequestId(r.getAllocationRequestId()); + ResourceRequest rr = ResourceRequest.newBuilder() + .priority(r.getPriority()).resourceName(r.getResourceName()) + .capability(r.getCapability()).numContainers(r.getNumContainers()) + .relaxLocality(r.getRelaxLocality()) + .nodeLabelExpression(r.getNodeLabelExpression()) + .executionTypeRequest(r.getExecutionTypeRequest()) + .allocationRequestId(r.getAllocationRequestId()).build(); askList.add(rr); } return askList; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/AllocateResponsePBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/AllocateResponsePBImpl.java index b4f51ef..c0d52a6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/AllocateResponsePBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/AllocateResponsePBImpl.java @@ -261,7 +261,9 @@ public synchronized void setUpdatedNodes( public synchronized void setUpdateErrors( List updateErrors) { if (updateErrors == null) { - this.updateErrors.clear(); + if (this.updateErrors != null) { + this.updateErrors.clear(); + } return; } this.updateErrors = new ArrayList<>( diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java index 59a6650..20cb1a6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java @@ -936,10 +936,13 @@ public void recoverContainer(RMContainer rmContainer) { } public ResourceRequest cloneResourceRequest(ResourceRequest request) { - ResourceRequest newRequest = - ResourceRequest.newInstance(request.getPriority(), - request.getResourceName(), request.getCapability(), 1, - request.getRelaxLocality(), request.getNodeLabelExpression()); + ResourceRequest newRequest = ResourceRequest.newBuilder() + .priority(request.getPriority()) + .resourceName(request.getResourceName()) + .capability(request.getCapability()) + .numContainers(1) + .relaxLocality(request.getRelaxLocality()) + .nodeLabelExpression(request.getNodeLabelExpression()).build(); return newRequest; } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/fica/FiCaSchedulerApp.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/fica/FiCaSchedulerApp.java index aa7ad50..f12ea0e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/fica/FiCaSchedulerApp.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/common/fica/FiCaSchedulerApp.java @@ -348,8 +348,9 @@ public Allocation getAllocation(ResourceCalculator resourceCalculator, } int numCont = (int) Math.ceil( Resources.divide(rc, clusterResource, tot, minimumAllocation)); - ResourceRequest rr = ResourceRequest.newInstance(Priority.UNDEFINED, - ResourceRequest.ANY, minimumAllocation, numCont); + ResourceRequest rr = ResourceRequest.newBuilder() + .priority(Priority.UNDEFINED).resourceName(ResourceRequest.ANY) + .capability(minimumAllocation).numContainers(numCont).build(); List newlyAllocatedContainers = pullNewlyAllocatedContainers(); List newlyIncreasedContainers = pullNewlyIncreasedContainers(); List newlyDecreasedContainers = pullNewlyDecreasedContainers();