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/protocolrecords/GetApplicationsRequest.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationsRequest.java index 5cc9cc1..8bc50b3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationsRequest.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationsRequest.java @@ -42,9 +42,7 @@ @Public @Stable public static GetApplicationsRequest newInstance() { - GetApplicationsRequest request = - Records.newRecord(GetApplicationsRequest.class); - return request; + return GetApplicationsRequest.newBuilder().build(); } /** @@ -83,29 +81,12 @@ public static GetApplicationsRequest newInstance( LongRange startRange, LongRange finishRange, Long limit) { - GetApplicationsRequest request = - Records.newRecord(GetApplicationsRequest.class); - if (scope != null) { - request.setScope(scope); - } - request.setUsers(users); - request.setQueues(queues); - request.setApplicationTypes(applicationTypes); - request.setApplicationTags(applicationTags); - request.setApplicationStates(applicationStates); - if (startRange != null) { - request.setStartRange( - startRange.getMinimumLong(), startRange.getMaximumLong()); - } - if (finishRange != null) { - request.setFinishRange( - finishRange.getMinimumLong(), finishRange.getMaximumLong()); - } - if (limit != null) { - request.setLimit(limit); - } - return request; - } + return GetApplicationsRequest.newBuilder().scope(scope).users(users) + .queues(queues).applicationTypes(applicationTypes) + .applicationTags(applicationTags) + .applicationStateSet(applicationStates).startRange(startRange) + .finishRange(finishRange).limit(limit).build(); + } /** *

@@ -122,10 +103,7 @@ public static GetApplicationsRequest newInstance( @Stable public static GetApplicationsRequest newInstance( ApplicationsRequestScope scope) { - GetApplicationsRequest request = - Records.newRecord(GetApplicationsRequest.class); - request.setScope(scope); - return request; + return GetApplicationsRequest.newBuilder().scope(scope).build(); } /** @@ -143,10 +121,8 @@ public static GetApplicationsRequest newInstance( @Stable public static GetApplicationsRequest newInstance(Set applicationTypes) { - GetApplicationsRequest request = - Records.newRecord(GetApplicationsRequest.class); - request.setApplicationTypes(applicationTypes); - return request; + return GetApplicationsRequest.newBuilder() + .applicationTypes(applicationTypes).build(); } /** @@ -164,10 +140,8 @@ public static GetApplicationsRequest newInstance( @Stable public static GetApplicationsRequest newInstance( EnumSet applicationStates) { - GetApplicationsRequest request = - Records.newRecord(GetApplicationsRequest.class); - request.setApplicationStates(applicationStates); - return request; + return GetApplicationsRequest.newBuilder() + .applicationStateSet(applicationStates).build(); } /** @@ -186,11 +160,9 @@ public static GetApplicationsRequest newInstance( public static GetApplicationsRequest newInstance( Set applicationTypes, EnumSet applicationStates) { - GetApplicationsRequest request = - Records.newRecord(GetApplicationsRequest.class); - request.setApplicationTypes(applicationTypes); - request.setApplicationStates(applicationStates); - return request; + return GetApplicationsRequest.newBuilder() + .applicationTypes(applicationTypes) + .applicationStateSet(applicationStates).build(); } /** @@ -393,4 +365,132 @@ public abstract void setStartRange(long begin, long end) @Private @Unstable public abstract void setScope(ApplicationsRequestScope scope); + + @Public + @Stable + public static GetApplicationsRequestBuilder newBuilder() { + return new GetApplicationsRequestBuilder(); + } + + @Public + @Stable + public static class GetApplicationsRequestBuilder { + private Set applicationTypes; + private Set applicationStates; + private EnumSet applicationStateSet; + private Set users; + private Set queues; + private Long limit = Long.MAX_VALUE; + private LongRange startRange; + private LongRange finishRange; + private Set applicationTags; + private ApplicationsRequestScope scope; + + private GetApplicationsRequestBuilder() { + } + + @Public + @Stable + public GetApplicationsRequestBuilder applicationTypes( + Set applicationTypes) { + this.applicationTypes = applicationTypes; + return this; + } + + @Public + @Stable + public GetApplicationsRequestBuilder applicationStates( + Set applicationStates) { + this.applicationStates = applicationStates; + return this; + } + + @Public + @Stable + public GetApplicationsRequestBuilder applicationStateSet( + EnumSet applicationStateSet) { + this.applicationStateSet = applicationStateSet; + return this; + } + + @Public + @Stable + public GetApplicationsRequestBuilder users(Set users) { + this.users = users; + return this; + } + + @Public + @Stable + public GetApplicationsRequestBuilder queues(Set queues) { + this.queues = queues; + return this; + } + + @Public + @Stable + public GetApplicationsRequestBuilder limit(long limit) { + this.limit = limit; + return this; + } + + @Public + @Stable + public GetApplicationsRequestBuilder startRange(LongRange startRange) { + this.startRange = startRange; + return this; + } + + @Public + @Stable + public GetApplicationsRequestBuilder finishRange(LongRange finishRange) { + this.finishRange = finishRange; + return this; + } + + @Public + @Stable + public GetApplicationsRequestBuilder applicationTags( + Set applicationTags) { + this.applicationTags = applicationTags; + return this; + } + + @Public + @Stable + public GetApplicationsRequestBuilder scope(ApplicationsRequestScope scope) { + this.scope = scope; + return this; + } + + @Public + @Stable + public GetApplicationsRequest build() { + GetApplicationsRequest request = Records + .newRecord(GetApplicationsRequest.class); + if (scope != null) { + request.setScope(scope); + } + request.setUsers(users); + request.setQueues(queues); + request.setApplicationTypes(applicationTypes); + request.setApplicationTags(applicationTags); + request.setApplicationStates(applicationStates); + if (applicationStateSet != null) { + request.setApplicationStates(applicationStateSet); + } + if (startRange != null) { + request.setStartRange(startRange.getMinimumLong(), + startRange.getMaximumLong()); + } + if (finishRange != null) { + request.setFinishRange(finishRange.getMinimumLong(), + finishRange.getMaximumLong()); + } + if (limit != null) { + request.setLimit(limit); + } + return request; + } + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java index 33116a4..6ad946b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ApplicationReport.java @@ -60,27 +60,15 @@ public static ApplicationReport newInstance(ApplicationId applicationId, long startTime, long finishTime, FinalApplicationStatus finalStatus, ApplicationResourceUsageReport appResources, String origTrackingUrl, float progress, String applicationType, Token amRmToken) { - ApplicationReport report = Records.newRecord(ApplicationReport.class); - report.setApplicationId(applicationId); - report.setCurrentApplicationAttemptId(applicationAttemptId); - report.setUser(user); - report.setQueue(queue); - report.setName(name); - report.setHost(host); - report.setRpcPort(rpcPort); - report.setClientToAMToken(clientToAMToken); - report.setYarnApplicationState(state); - report.setDiagnostics(diagnostics); - report.setTrackingUrl(url); - report.setStartTime(startTime); - report.setFinishTime(finishTime); - report.setFinalApplicationStatus(finalStatus); - report.setApplicationResourceUsageReport(appResources); - report.setOriginalTrackingUrl(origTrackingUrl); - report.setProgress(progress); - report.setApplicationType(applicationType); - report.setAMRMToken(amRmToken); - return report; + return ApplicationReport.newBuilder().applicationId(applicationId) + .currentApplicationAttemptId(applicationAttemptId).user(user) + .queue(queue).name(name).host(host).rpcPort(rpcPort) + .clientToAMToken(clientToAMToken).yarnApplicationState(state) + .diagnostics(diagnostics).url(url).startTime(startTime) + .finishTime(finishTime).finalApplicationStatus(finalStatus) + .applicationResourceUsageReport(appResources) + .originalTrackingUrl(origTrackingUrl).progress(progress) + .applicationType(applicationType).amRmToken(amRmToken).build(); } @Private @@ -94,17 +82,18 @@ public static ApplicationReport newInstance(ApplicationId applicationId, float progress, String applicationType, Token amRmToken, Set tags, boolean unmanagedApplication, Priority priority, String appNodeLabelExpression, String amNodeLabelExpression) { - ApplicationReport report = - newInstance(applicationId, applicationAttemptId, user, queue, name, - host, rpcPort, clientToAMToken, state, diagnostics, url, startTime, - finishTime, finalStatus, appResources, origTrackingUrl, progress, - applicationType, amRmToken); - report.setApplicationTags(tags); - report.setUnmanagedApp(unmanagedApplication); - report.setPriority(priority); - report.setAppNodeLabelExpression(appNodeLabelExpression); - report.setAmNodeLabelExpression(amNodeLabelExpression); - return report; + return ApplicationReport.newBuilder().applicationId(applicationId) + .currentApplicationAttemptId(applicationAttemptId).user(user) + .queue(queue).name(name).host(host).rpcPort(rpcPort) + .clientToAMToken(clientToAMToken).yarnApplicationState(state) + .diagnostics(diagnostics).url(url).startTime(startTime) + .finishTime(finishTime).finalApplicationStatus(finalStatus) + .applicationResourceUsageReport(appResources) + .originalTrackingUrl(origTrackingUrl).progress(progress) + .applicationType(applicationType).amRmToken(amRmToken) + .applicationTags(tags).unmanagedApplication(unmanagedApplication) + .priority(priority).appNodeLabelExpression(appNodeLabelExpression) + .amNodeLabelExpression(amNodeLabelExpression).build(); } /** @@ -447,4 +436,257 @@ public abstract void setLogAggregationStatus( @Unstable public abstract void setAmNodeLabelExpression(String amNodeLabelExpression); + + @Public + @Stable + public static ApplicationReportBuilder newBuilder() { + return new ApplicationReportBuilder(); + } + + @Public + @Stable + public static class ApplicationReportBuilder { + private ApplicationId applicationId; + private ApplicationAttemptId currentApplicationAttemptId; + private String user; + private String queue; + private String name; + private String host; + private int rpcPort; + private Token clientToAMToken; + private YarnApplicationState yarnApplicationState; + private String diagnostics; + private String url; + private long startTime; + private long finishTime; + private FinalApplicationStatus finalApplicationStatus; + private ApplicationResourceUsageReport applicationResourceUsageReport; + private String originalTrackingUrl; + private float progress; + private String applicationType; + private Token amRmToken; + private LogAggregationStatus logAggregationStatus; + private Set applicationTags; + private boolean unmanagedApplication; + private Priority priority; + private String appNodeLabelExpression; + private String amNodeLabelExpression; + + private ApplicationReportBuilder() { + } + + @Public + @Stable + public ApplicationReportBuilder applicationId(ApplicationId applicationId) { + this.applicationId = applicationId; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder currentApplicationAttemptId( + ApplicationAttemptId currentApplicationAttemptId) { + this.currentApplicationAttemptId = currentApplicationAttemptId; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder user(String user) { + this.user = user; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder queue(String queue) { + this.queue = queue; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder name(String name) { + this.name = name; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder host(String host) { + this.host = host; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder rpcPort(int rpcPort) { + this.rpcPort = rpcPort; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder clientToAMToken(Token clientToAMToken) { + this.clientToAMToken = clientToAMToken; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder yarnApplicationState( + YarnApplicationState yarnApplicationState) { + this.yarnApplicationState = yarnApplicationState; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder diagnostics(String diagnostics) { + this.diagnostics = diagnostics; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder url(String url) { + this.url = url; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder startTime(long startTime) { + this.startTime = startTime; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder finishTime(long finishTime) { + this.finishTime = finishTime; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder finalApplicationStatus( + FinalApplicationStatus finalApplicationStatus) { + this.finalApplicationStatus = finalApplicationStatus; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder applicationResourceUsageReport( + ApplicationResourceUsageReport applicationResourceUsageReport) { + this.applicationResourceUsageReport = applicationResourceUsageReport; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder originalTrackingUrl( + String originalTrackingUrl) { + this.originalTrackingUrl = originalTrackingUrl; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder progress(float progress) { + this.progress = progress; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder applicationType(String applicationType) { + this.applicationType = applicationType; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder amRmToken(Token amRmToken) { + this.amRmToken = amRmToken; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder logAggregationStatus( + LogAggregationStatus logAggregationStatus) { + this.logAggregationStatus = logAggregationStatus; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder applicationTags(Set applicationTags) { + this.applicationTags = applicationTags; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder unmanagedApplication( + boolean unmanagedApplication) { + this.unmanagedApplication = unmanagedApplication; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder priority(Priority priority) { + this.priority = priority; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder appNodeLabelExpression( + String appNodeLabelExpression) { + this.appNodeLabelExpression = appNodeLabelExpression; + return this; + } + + @Public + @Stable + public ApplicationReportBuilder amNodeLabelExpression( + String amNodeLabelExpression) { + this.amNodeLabelExpression = amNodeLabelExpression; + return this; + } + + public ApplicationReport build() { + ApplicationReport report = Records.newRecord(ApplicationReport.class); + report.setApplicationId(applicationId); + report.setCurrentApplicationAttemptId(currentApplicationAttemptId); + report.setUser(user); + report.setQueue(queue); + report.setName(name); + report.setHost(host); + report.setRpcPort(rpcPort); + report.setClientToAMToken(clientToAMToken); + report.setYarnApplicationState(yarnApplicationState); + report.setDiagnostics(diagnostics); + report.setTrackingUrl(url); + report.setStartTime(startTime); + report.setFinishTime(finishTime); + report.setFinalApplicationStatus(finalApplicationStatus); + report.setApplicationResourceUsageReport(applicationResourceUsageReport); + report.setOriginalTrackingUrl(originalTrackingUrl); + report.setProgress(progress); + report.setApplicationType(applicationType); + report.setAMRMToken(amRmToken); + report.setLogAggregationStatus(logAggregationStatus); + report.setApplicationTags(applicationTags); + report.setUnmanagedApp(unmanagedApplication); + report.setPriority(priority); + report.setAppNodeLabelExpression(appNodeLabelExpression); + report.setAmNodeLabelExpression(amNodeLabelExpression); + return report; + } + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Container.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Container.java index 4fdc803..1ea6ac5 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Container.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Container.java @@ -67,8 +67,9 @@ public static Container newInstance(ContainerId containerId, NodeId nodeId, String nodeHttpAddress, Resource resource, Priority priority, Token containerToken) { - return newInstance(containerId, nodeId, nodeHttpAddress, resource, priority, - containerToken, ExecutionType.GUARANTEED); + return Container.newBuilder().containerId(containerId).nodeId(nodeId) + .nodeHttpAddress(nodeHttpAddress).resource(resource).priority(priority) + .containerToken(containerToken).build(); } @Private @@ -76,15 +77,9 @@ public static Container newInstance(ContainerId containerId, NodeId nodeId, public static Container newInstance(ContainerId containerId, NodeId nodeId, String nodeHttpAddress, Resource resource, Priority priority, Token containerToken, ExecutionType executionType) { - Container container = Records.newRecord(Container.class); - container.setId(containerId); - container.setNodeId(nodeId); - container.setNodeHttpAddress(nodeHttpAddress); - container.setResource(resource); - container.setPriority(priority); - container.setContainerToken(containerToken); - container.setExecutionType(executionType); - return container; + return Container.newBuilder().containerId(containerId).nodeId(nodeId) + .nodeHttpAddress(nodeHttpAddress).resource(resource).priority(priority) + .containerToken(containerToken).executionType(executionType).build(); } /** @@ -256,4 +251,105 @@ public int getVersion() { public void setVersion(int version) { throw new UnsupportedOperationException(); } + + @Public + @Stable + public static ContainerBuilder newBuilder() { + return new ContainerBuilder(); + } + + @Public + @Stable + public static class ContainerBuilder { + private ContainerId containerId; + private NodeId nodeId; + private String nodeHttpAddress; + private Resource resource; + private Priority priority; + private Token containerToken; + private ExecutionType executionType = ExecutionType.GUARANTEED; + private long allocationRequestId; + private int version = 0; + + private ContainerBuilder() {} + + @Public + @Stable + public ContainerBuilder containerId(ContainerId containerId) { + this.containerId = containerId; + return this; + } + + @Public + @Stable + public ContainerBuilder nodeId(NodeId nodeId) { + this.nodeId = nodeId; + return this; + } + + @Public + @Stable + public ContainerBuilder nodeHttpAddress(String nodeHttpAddress) { + this.nodeHttpAddress = nodeHttpAddress; + return this; + } + + @Public + @Stable + public ContainerBuilder resource(Resource resource) { + this.resource = resource; + return this; + } + + @Public + @Stable + public ContainerBuilder priority(Priority priority) { + this.priority = priority; + return this; + } + + @Public + @Stable + public ContainerBuilder containerToken(Token containerToken) { + this.containerToken = containerToken; + return this; + } + + @Private + @Unstable + public ContainerBuilder executionType(ExecutionType executionType) { + this.executionType = executionType; + return this; + } + + @Private + @Evolving + public ContainerBuilder allocationRequestId(long allocationRequestId) { + this.allocationRequestId = allocationRequestId; + return this; + } + + @Private + @Unstable + public ContainerBuilder version(int version) { + this.version = version; + return this; + } + + @Public + @Stable + public Container build() { + Container container = Records.newRecord(Container.class); + container.setId(containerId); + container.setNodeId(nodeId); + container.setNodeHttpAddress(nodeHttpAddress); + container.setResource(resource); + container.setPriority(priority); + container.setContainerToken(containerToken); + container.setExecutionType(executionType); + container.setAllocationRequestId(allocationRequestId); + container.setVersion(version); + return container; + } + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerReport.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerReport.java index 11d7bca..6b56e2f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerReport.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerReport.java @@ -20,6 +20,7 @@ import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.classification.InterfaceAudience.Public; +import org.apache.hadoop.classification.InterfaceStability.Stable; import org.apache.hadoop.classification.InterfaceStability.Unstable; import org.apache.hadoop.yarn.util.Records; @@ -52,19 +53,13 @@ public static ContainerReport newInstance(ContainerId containerId, long creationTime, long finishTime, String diagnosticInfo, String logUrl, int containerExitStatus, ContainerState containerState, String nodeHttpAddress) { - ContainerReport report = Records.newRecord(ContainerReport.class); - report.setContainerId(containerId); - report.setAllocatedResource(allocatedResource); - report.setAssignedNode(assignedNode); - report.setPriority(priority); - report.setCreationTime(creationTime); - report.setFinishTime(finishTime); - report.setDiagnosticsInfo(diagnosticInfo); - report.setLogUrl(logUrl); - report.setContainerExitStatus(containerExitStatus); - report.setContainerState(containerState); - report.setNodeHttpAddress(nodeHttpAddress); - return report; + return ContainerReport.newBuilder().containerId(containerId) + .allocatedResource(allocatedResource).assignedNode(assignedNode) + .priority(priority).creationTime(creationTime).finishTime(finishTime) + .diagnosticsInfo(diagnosticInfo).logUrl(logUrl) + .containerExitStatus(containerExitStatus) + .containerState(containerState).nodeHttpAddress(nodeHttpAddress) + .build(); } /** @@ -209,4 +204,124 @@ public static ContainerReport newInstance(ContainerId containerId, @Private @Unstable public abstract void setNodeHttpAddress(String nodeHttpAddress); + + @Public + @Stable + public static ContainerReportBuilder newBuilder() { + return new ContainerReportBuilder(); + } + + @Public + @Stable + public static class ContainerReportBuilder { + private ContainerId containerId; + private Resource allocatedResource; + private NodeId assignedNode; + private Priority priority; + private long creationTime; + private long finishTime; + private String diagnosticInfo; + private String logUrl; + private ContainerState containerState; + private int containerExitStatus; + private String nodeHttpAddress; + + private ContainerReportBuilder() { + } + + @Public + @Stable + public ContainerReportBuilder containerId(ContainerId containerId) { + this.containerId = containerId; + return this; + } + + @Public + @Stable + public ContainerReportBuilder allocatedResource(Resource allocatedResource) { + this.allocatedResource = allocatedResource; + return this; + } + + @Public + @Stable + public ContainerReportBuilder assignedNode(NodeId assignedNode) { + this.assignedNode = assignedNode; + return this; + } + + @Public + @Stable + public ContainerReportBuilder priority(Priority priority) { + this.priority = priority; + return this; + } + + @Public + @Stable + public ContainerReportBuilder creationTime(long creationTime) { + this.creationTime = creationTime; + return this; + } + + @Public + @Stable + public ContainerReportBuilder finishTime(long finishTime) { + this.finishTime = finishTime; + return this; + } + + @Public + @Stable + public ContainerReportBuilder diagnosticsInfo(String diagnosticInfo) { + this.diagnosticInfo = diagnosticInfo; + return this; + } + + @Public + @Stable + public ContainerReportBuilder logUrl(String logUrl) { + this.logUrl = logUrl; + return this; + } + + @Public + @Stable + public ContainerReportBuilder containerState(ContainerState containerState) { + this.containerState = containerState; + return this; + } + + @Public + @Stable + public ContainerReportBuilder containerExitStatus(int containerExitStatus) { + this.containerExitStatus = containerExitStatus; + return this; + } + + @Public + @Stable + public ContainerReportBuilder nodeHttpAddress(String nodeHttpAddress) { + this.nodeHttpAddress = nodeHttpAddress; + return this; + } + + @Public + @Stable + public ContainerReport build() { + ContainerReport report = Records.newRecord(ContainerReport.class); + report.setContainerId(containerId); + report.setAllocatedResource(allocatedResource); + report.setAssignedNode(assignedNode); + report.setPriority(priority); + report.setCreationTime(creationTime); + report.setFinishTime(finishTime); + report.setDiagnosticsInfo(diagnosticInfo); + report.setLogUrl(logUrl); + report.setContainerExitStatus(containerExitStatus); + report.setContainerState(containerState); + report.setNodeHttpAddress(nodeHttpAddress); + return report; + } + } } 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..5f2652f 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 = null; + 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-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java index 8c060bc..b38fff9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java @@ -1173,8 +1173,8 @@ private void changeContainerResourceInternal(ContainerId containerId, } if (increase) { org.apache.hadoop.yarn.api.records.Container increasedContainer = - org.apache.hadoop.yarn.api.records.Container.newInstance( - containerId, null, null, targetResource, null, null); + org.apache.hadoop.yarn.api.records.Container.newBuilder() + .containerId(containerId).resource(targetResource).build(); if (context.getIncreasedContainers().putIfAbsent(containerId, increasedContainer) != null){ throw RPCUtil.getRemoteException("Container " + containerId.toString() 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/AbstractYarnScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java index 45415de..89c3108 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java @@ -433,11 +433,11 @@ public synchronized void recoverContainersOnNode( private RMContainer recoverAndCreateContainer(NMContainerStatus status, RMNode node) { - Container container = - Container.newInstance(status.getContainerId(), node.getNodeID(), - node.getHttpAddress(), status.getAllocatedResource(), - status.getPriority(), null); - container.setVersion(status.getVersion()); + Container container = Container.newBuilder() + .containerId(status.getContainerId()).nodeId(node.getNodeID()) + .nodeHttpAddress(node.getHttpAddress()) + .resource(status.getAllocatedResource()).priority(status.getPriority()) + .version(status.getVersion()).build(); ApplicationAttemptId attemptId = container.getId().getApplicationAttemptId(); RMContainer rmContainer = 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();