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..231ea26 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,79 @@ public abstract void setResourceBlacklistRequest( @Unstable public abstract void setUpdateRequests( List updateRequests); -} + + public static AllocateRequestBuilder newBuilder() { + return new AllocateRequestBuilder(); + } + + @Public + @Stable + public static class AllocateRequestBuilder { + private int responseId = 0; + private float progress = 0f; + private List askList = null; + private List releaseList = null; + private ResourceBlacklistRequest resourceBlacklistRequest = null; + private List updateRequests = null; + + private AllocateRequestBuilder() {} + + @Public + @Stable + public AllocateRequestBuilder responseId(int responseId) { + this.responseId = responseId; + return this; + } + + @Public + @Stable + public AllocateRequestBuilder progress(float progress) { + this.progress = progress; + return this; + } + + @Public + @Stable + public AllocateRequestBuilder askList(List askList) { + this.askList = askList; + return this; + } + + @Public + @Stable + public AllocateRequestBuilder releaseList(List releaseList) { + this.releaseList = releaseList; + return this; + } + + @Public + @Stable + public AllocateRequestBuilder resourceBlacklistRequest( + ResourceBlacklistRequest resourceBlacklistRequest) { + this.resourceBlacklistRequest = resourceBlacklistRequest; + return this; + } + + @Public + @Unstable + public AllocateRequestBuilder updateRequests( + List updateRequests) { + this.updateRequests = updateRequests; + return this; + } + + @Public + @Stable + public AllocateRequest build() { + AllocateRequest allocateRequest = + Records.newRecord(AllocateRequest.class); + allocateRequest.setResponseId(responseId); + allocateRequest.setProgress(progress); + allocateRequest.setAskList(askList); + allocateRequest.setReleaseList(releaseList); + allocateRequest.setResourceBlacklistRequest(resourceBlacklistRequest); + allocateRequest.setUpdateRequests(updateRequests); + 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..f26e395 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,158 @@ public abstract void setUpdatedContainers( @Unstable public void setUpdateErrors(List updateErrors) { } + + @Public + @Stable + public static AllocateResponseBuilder newBuilder() { + return new AllocateResponseBuilder(); + } + + @Public + @Stable + public static class AllocateResponseBuilder { + private AMCommand amCommand = null; + private int responseId = 0; + private List allocatedContainers = null; + private Resource availableResources = null; + private List completedContainersStatuses = null; + private List updatedNodes = null; + private int numClusterNodes = 0; + private PreemptionMessage preemptionMessage = null; + private List nmTokens = null; + private List updatedContainers = null; + private Token amRmToken = null; + private Priority applicationPriority = Priority.newInstance(0); + private String collectorAddr = null; + private List updateErrors = null; + + private AllocateResponseBuilder() {} + + @Public + @Stable + public AllocateResponseBuilder amCommand(AMCommand amCommand) { + this.amCommand = amCommand; + return this; + } + + @Public + @Stable + public AllocateResponseBuilder responseId(int responseId) { + this.responseId = responseId; + return this; + } + + @Public + @Stable + public AllocateResponseBuilder allocatedContainers( + List allocatedContainers) { + this.allocatedContainers = allocatedContainers; + return this; + } + + @Public + @Stable + public AllocateResponseBuilder availableResources( + Resource availableResources) { + this.availableResources = availableResources; + return this; + } + + @Public + @Stable + public AllocateResponseBuilder completedContainersStatuses( + List completedContainersStatuses) { + this.completedContainersStatuses = completedContainersStatuses; + return this; + } + + @Public + @Stable + public AllocateResponseBuilder updatedNodes( + List updatedNodes) { + this.updatedNodes = updatedNodes; + return this; + } + + @Public + @Stable + public AllocateResponseBuilder numClusterNodes(int numClusterNodes) { + this.numClusterNodes = numClusterNodes; + return this; + } + + @Public + @Evolving + public AllocateResponseBuilder preemptionMessage( + PreemptionMessage preemptionMessage) { + this.preemptionMessage = preemptionMessage; + return this; + } + + @Public + @Stable + public AllocateResponseBuilder nmTokens(List nmTokens) { + this.nmTokens = nmTokens; + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder updatedContainers( + List updatedContainers) { + this.updatedContainers = updatedContainers; + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder amRmToken(Token amRmToken) { + this.amRmToken = amRmToken; + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder applicationPriority( + Priority applicationPriority) { + this.applicationPriority = applicationPriority; + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder collectorAddr(String collectorAddr) { + this.collectorAddr = collectorAddr; + return this; + } + + @Public + @Unstable + public AllocateResponseBuilder updateErrors( + List updateErrors) { + this.updateErrors = updateErrors; + return this; + } + + @Public + @Stable + public AllocateResponse build() { + AllocateResponse response = Records.newRecord(AllocateResponse.class); + response.setNumClusterNodes(numClusterNodes); + response.setResponseId(responseId); + response.setCompletedContainersStatuses(completedContainersStatuses); + response.setAllocatedContainers(allocatedContainers); + response.setUpdatedNodes(updatedNodes); + response.setAvailableResources(availableResources); + response.setAMCommand(amCommand); + response.setPreemptionMessage(preemptionMessage); + response.setNMTokens(nmTokens); + response.setAMRMToken(amRmToken); + response.setCollectorAddr(collectorAddr); + response.setUpdatedContainers(updatedContainers); + response.setApplicationPriority(applicationPriority); + response.setUpdateErrors(updateErrors); + return response; + } + } } 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..b79e47b 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,107 @@ 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(); + } + + @Public + @Stable + public static class ResourceRequestBuilder { + private Priority priority = Priority.newInstance(0); + private String resourceName = ResourceRequest.ANY; + private Resource capability = Resource.newInstance(1024, 1); + private int numContainers = 1; + private boolean relaxLocality = true; + private String nodeLabelExpression = null; + private ExecutionTypeRequest executionTypeRequest = + ExecutionTypeRequest.newInstance(); + private long allocationRequestId = 0; + + private ResourceRequestBuilder() {} + + @Public + @Stable + public ResourceRequestBuilder priority(Priority priority) { + this.priority = priority; + return this; + } + + @Public + @Stable + public ResourceRequestBuilder resourceName(String resourceName) { + this.resourceName = resourceName; + return this; + } + + @Public + @Stable + public ResourceRequestBuilder capability(Resource capability) { + this.capability = capability; + return this; + } + + @Public + @Stable + public ResourceRequestBuilder numContainers(int numContainers) { + this.numContainers = numContainers; + return this; + } + + @Public + @Stable + public ResourceRequestBuilder relaxLocality(boolean relaxLocality) { + this.relaxLocality = relaxLocality; + return this; + } + + @Public + @Evolving + public ResourceRequestBuilder nodeLabelExpression( + String nodeLabelExpression) { + this.nodeLabelExpression = nodeLabelExpression; + return this; + } + + @Public + @Evolving + public ResourceRequestBuilder executionTypeRequest( + ExecutionTypeRequest executionTypeRequest) { + this.executionTypeRequest = executionTypeRequest; + return this; + } + + @Public + @Evolving + public ResourceRequestBuilder allocationRequestId( + long allocationRequestId) { + this.allocationRequestId = allocationRequestId; + return this; + } + + @Public + @Stable + public ResourceRequest build() { + ResourceRequest request = Records.newRecord(ResourceRequest.class); + request.setPriority(priority); + request.setResourceName(resourceName); + request.setCapability(capability); + request.setNumContainers(numContainers); + request.setRelaxLocality(relaxLocality); + request.setNodeLabelExpression(nodeLabelExpression); + request.setExecutionTypeRequest(executionTypeRequest); + request.setAllocationRequestId(allocationRequestId); + return request; + } } @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..848e77f 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,90 @@ public String toString() { .append("]"); return sb.toString(); } + + public static ContainerRequestBuilder newBuilder() { + return new ContainerRequestBuilder(); + } + + public static class ContainerRequestBuilder { + private Resource capability; + private String[] nodes; + private String[] racks; + private Priority priority; + private long allocationRequestId; + private boolean relaxLocality; + private String nodeLabelsExpression; + private ExecutionTypeRequest executionTypeRequest; + + public ContainerRequestBuilder capability(Resource capability) { + this.capability = capability; + return this; + } + + public ContainerRequestBuilder nodes(String[] nodes) { + this.nodes = nodes; + return this; + } + + public ContainerRequestBuilder racks(String[] racks) { + this.racks = racks; + return this; + } + + public ContainerRequestBuilder priority(Priority priority) { + this.priority = priority; + return this; + } + + public ContainerRequestBuilder allocationRequestId( + long allocationRequestId) { + this.allocationRequestId = allocationRequestId; + return this; + } + + public ContainerRequestBuilder relaxLocality(boolean relaxLocality) { + this.relaxLocality = relaxLocality; + return this; + } + + public ContainerRequestBuilder nodeLabelsExpression( + String nodeLabelsExpression) { + this.nodeLabelsExpression = nodeLabelsExpression; + return this; + } + + public ContainerRequestBuilder executionTypeRequest( + ExecutionTypeRequest executionTypeRequest) { + this.executionTypeRequest = executionTypeRequest; + return this; + } + + public ContainerRequest build() { + // Validate request + Preconditions.checkArgument(capability != null, + "The Resource to be requested for each container " + + "should not be null "); + Preconditions.checkArgument(priority != null, + "The priority at which to request containers should not be null "); + Preconditions.checkArgument( + !(!relaxLocality && (racks == null || racks.length == 0) + && (nodes == null || nodes.length == 0)), + "Can't turn off locality relaxation on a " + + "request with no location constraints"); + ContainerRequest request = new ContainerRequest(); + request.allocationRequestId = allocationRequestId; + request.capability = capability; + request.nodes = (nodes != null ? ImmutableList.copyOf(nodes) : null); + request.racks = (racks != null ? ImmutableList.copyOf(racks) : null); + request.priority = priority; + request.relaxLocality = relaxLocality; + request.nodeLabelsExpression = nodeLabelsExpression; + request.executionTypeRequest = executionTypeRequest; + return request; + } + } } - + /** * 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 6f6bb85..7ac572c 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-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 c677345..a72229c 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 @@ -833,10 +833,13 @@ public synchronized 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(request.getNumContainers()) + .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 33dee80..6a33ab7b 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 @@ -354,9 +354,9 @@ public synchronized Allocation getAllocation(ResourceCalculator rc, } 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();