MAPREDUCE-2891. Javadoc for AMRMProtocol and related records. Contributed by acmurthy.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1162499 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c9cbd8e4e6
commit
00d2263908
@ -1158,6 +1158,8 @@ Release 0.23.0 - Unreleased
|
|||||||
MAPREDUCE-2893. Remove duplicate entry of YarnClientProtocolProvider in
|
MAPREDUCE-2893. Remove duplicate entry of YarnClientProtocolProvider in
|
||||||
ClientProtocolProvider services file. (Liang-Chi Hsieh via acmurthy)
|
ClientProtocolProvider services file. (Liang-Chi Hsieh via acmurthy)
|
||||||
|
|
||||||
|
MAPREDUCE-2891. Javadoc for AMRMProtocol and related records. (acmurthy)
|
||||||
|
|
||||||
Release 0.22.0 - Unreleased
|
Release 0.22.0 - Unreleased
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
@ -18,16 +18,89 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.yarn.api;
|
package org.apache.hadoop.yarn.api;
|
||||||
|
|
||||||
|
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||||
|
import org.apache.hadoop.classification.InterfaceStability.Stable;
|
||||||
import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
|
import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
|
||||||
import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse;
|
import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse;
|
||||||
import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest;
|
import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest;
|
||||||
import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterResponse;
|
import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterResponse;
|
||||||
import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest;
|
import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest;
|
||||||
import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse;
|
import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse;
|
||||||
|
import org.apache.hadoop.yarn.api.records.Container;
|
||||||
|
import org.apache.hadoop.yarn.api.records.ResourceRequest;
|
||||||
import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
|
import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The protocol between a live instance of <code>ApplicationMaster</code>
|
||||||
|
* and the <code>ResourceManager</code>.</p>
|
||||||
|
*
|
||||||
|
* <p>This is used by the <code>ApplicationMaster</code> to register/unregister
|
||||||
|
* and to request and obtain resources in the cluster from the
|
||||||
|
* <code>ResourceManager</code>.</p>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public interface AMRMProtocol {
|
public interface AMRMProtocol {
|
||||||
public RegisterApplicationMasterResponse registerApplicationMaster(RegisterApplicationMasterRequest request) throws YarnRemoteException;
|
|
||||||
public FinishApplicationMasterResponse finishApplicationMaster(FinishApplicationMasterRequest request) throws YarnRemoteException;;
|
/**
|
||||||
public AllocateResponse allocate(AllocateRequest request) throws YarnRemoteException;
|
* <p>The interface used by a new <code>ApplicationMaster</code> to register
|
||||||
|
* with the <code>ResourceManager</code>.</p>
|
||||||
|
*
|
||||||
|
* <p>The <code>ApplicationMaster</code> needs to provide details such
|
||||||
|
* as RPC Port, HTTP tracking url etc. as specified in
|
||||||
|
* {@link RegisterApplicationMasterRequest}.</p>
|
||||||
|
*
|
||||||
|
* <p>The <code>ResourceManager</code> responds with critical details such
|
||||||
|
* as minimum and maximum resource capabilities in the cluster as specified in
|
||||||
|
* {@link RegisterApplicationMasterResponse}.</p>
|
||||||
|
*
|
||||||
|
* @param request registration request
|
||||||
|
* @return registration respose
|
||||||
|
* @throws YarnRemoteException
|
||||||
|
*/
|
||||||
|
public RegisterApplicationMasterResponse registerApplicationMaster(
|
||||||
|
RegisterApplicationMasterRequest request)
|
||||||
|
throws YarnRemoteException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The interface used by an <code>ApplicationMaster</code> to notify the
|
||||||
|
* <code>ResourceManager</code> about its completion (success or failed).</p>
|
||||||
|
*
|
||||||
|
* <p>The <code>ApplicationMaster</code> has to provide details such as
|
||||||
|
* final state, diagnostics (in case of failures) etc. as specified in
|
||||||
|
* {@link FinishApplicationMasterRequest}.</p>
|
||||||
|
*
|
||||||
|
* <p>The <code>ResourceManager</code> responds with
|
||||||
|
* {@link FinishApplicationMasterResponse}.</p>
|
||||||
|
*
|
||||||
|
* @param request completion request
|
||||||
|
* @return completion response
|
||||||
|
* @throws YarnRemoteException
|
||||||
|
*/
|
||||||
|
public FinishApplicationMasterResponse finishApplicationMaster(
|
||||||
|
FinishApplicationMasterRequest request)
|
||||||
|
throws YarnRemoteException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The main interface between an <code>ApplicationMaster</code>
|
||||||
|
* and the <code>ResourceManager</code>.</p>
|
||||||
|
*
|
||||||
|
* <p>The <code>ApplicationMaster</code> uses this interface to provide a list
|
||||||
|
* of {@link ResourceRequest} and returns unused {@link Container} allocated
|
||||||
|
* to it via {@link AllocateRequest}.</p>
|
||||||
|
*
|
||||||
|
* <p>The <code>ResourceManager</code> responds with list of allocated
|
||||||
|
* {@link Container}, status of completed containers and headroom information
|
||||||
|
* for the application.</p>
|
||||||
|
*
|
||||||
|
* <p>The <code>ApplicationMaster</code> can use the available headroom
|
||||||
|
* (resources) to decide how to utilized allocated resources and make
|
||||||
|
* informed decisions about future resource requests.</p>
|
||||||
|
*
|
||||||
|
* @param request allocation request
|
||||||
|
* @return allocation response
|
||||||
|
* @throws YarnRemoteException
|
||||||
|
*/
|
||||||
|
public AllocateResponse allocate(AllocateRequest request)
|
||||||
|
throws YarnRemoteException;
|
||||||
}
|
}
|
||||||
|
@ -40,9 +40,10 @@
|
|||||||
|
|
||||||
public interface ClientRMProtocol {
|
public interface ClientRMProtocol {
|
||||||
public GetNewApplicationIdResponse getNewApplicationId(GetNewApplicationIdRequest request) throws YarnRemoteException;
|
public GetNewApplicationIdResponse getNewApplicationId(GetNewApplicationIdRequest request) throws YarnRemoteException;
|
||||||
public GetApplicationReportResponse getApplicationReport(GetApplicationReportRequest request) throws YarnRemoteException;
|
|
||||||
public SubmitApplicationResponse submitApplication(SubmitApplicationRequest request) throws YarnRemoteException;
|
public SubmitApplicationResponse submitApplication(SubmitApplicationRequest request) throws YarnRemoteException;
|
||||||
public FinishApplicationResponse finishApplication(FinishApplicationRequest request) throws YarnRemoteException;
|
public FinishApplicationResponse finishApplication(FinishApplicationRequest request) throws YarnRemoteException;
|
||||||
|
|
||||||
|
public GetApplicationReportResponse getApplicationReport(GetApplicationReportRequest request) throws YarnRemoteException;
|
||||||
public GetClusterMetricsResponse getClusterMetrics(GetClusterMetricsRequest request) throws YarnRemoteException;
|
public GetClusterMetricsResponse getClusterMetrics(GetClusterMetricsRequest request) throws YarnRemoteException;
|
||||||
public GetAllApplicationsResponse getAllApplications(GetAllApplicationsRequest request) throws YarnRemoteException;
|
public GetAllApplicationsResponse getAllApplications(GetAllApplicationsRequest request) throws YarnRemoteException;
|
||||||
public GetClusterNodesResponse getClusterNodes(GetClusterNodesRequest request) throws YarnRemoteException;
|
public GetClusterNodesResponse getClusterNodes(GetClusterNodesRequest request) throws YarnRemoteException;
|
||||||
|
@ -20,36 +20,150 @@
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
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.api.AMRMProtocol;
|
||||||
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
||||||
|
import org.apache.hadoop.yarn.api.records.Container;
|
||||||
import org.apache.hadoop.yarn.api.records.ContainerId;
|
import org.apache.hadoop.yarn.api.records.ContainerId;
|
||||||
import org.apache.hadoop.yarn.api.records.ResourceRequest;
|
import org.apache.hadoop.yarn.api.records.ResourceRequest;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The core request sent by the <code>ApplicationMaster</code> to the
|
||||||
|
* <code>ResourceManager</code> to obtain resources in the cluster via
|
||||||
|
* {@link AMRMProtocol#allocate(AllocateRequest)}.</p>
|
||||||
|
*
|
||||||
|
* <p>The request includes:
|
||||||
|
* <ul>
|
||||||
|
* <li>
|
||||||
|
* {@link ApplicationAttemptId} being managed by the
|
||||||
|
* <code>ApplicationMaster</code>
|
||||||
|
* </li>
|
||||||
|
* <li>A response id to track duplicate responses.</li>
|
||||||
|
* <li>Progress information.</li>
|
||||||
|
* <li>
|
||||||
|
* A list of {@link ResourceRequest} to inform the
|
||||||
|
* <code>ResourceManager</code> about the application's
|
||||||
|
* resource requirements.
|
||||||
|
* </li>
|
||||||
|
* <li>
|
||||||
|
* A list of unused {@link Container} which are being returned.
|
||||||
|
* </li>
|
||||||
|
* <li></li>
|
||||||
|
* </ul>
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public interface AllocateRequest {
|
public interface AllocateRequest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the {@link ApplicationAttemptId} being managed by the
|
||||||
|
* <code>ApplicationMaster</code>.
|
||||||
|
* @return <code>ApplicationAttemptId</code> being managed by the
|
||||||
|
* <code>ApplicationMaster</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
ApplicationAttemptId getApplicationAttemptId();
|
ApplicationAttemptId getApplicationAttemptId();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setApplicationAttemptId(ApplicationAttemptId applicationAttemptId);
|
void setApplicationAttemptId(ApplicationAttemptId applicationAttemptId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the response id.
|
||||||
|
* @return the response id
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
int getResponseId();
|
int getResponseId();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setResponseId(int id);
|
void setResponseId(int id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current progress of application.
|
||||||
|
* @return the current progress of application
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
float getProgress();
|
float getProgress();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setProgress(float progress);
|
void setProgress(float progress);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of <code>ResourceRequest</code> to upate the
|
||||||
|
* <code>ResourceManager</code> about the application's resource requirements.
|
||||||
|
* @return the list of <code>ResourceRequest</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
List<ResourceRequest> getAskList();
|
List<ResourceRequest> getAskList();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
ResourceRequest getAsk(int index);
|
ResourceRequest getAsk(int index);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
int getAskCount();
|
int getAskCount();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of <code>ContainerId</code> of unused containers being
|
||||||
|
* released by the <code>ApplicationMaster</code>.
|
||||||
|
* @return list of <code>ContainerId</code> of unused containers being
|
||||||
|
* released by the <code>ApplicationMaster</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
List<ContainerId> getReleaseList();
|
List<ContainerId> getReleaseList();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
ContainerId getRelease(int index);
|
ContainerId getRelease(int index);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
int getReleaseCount();
|
int getReleaseCount();
|
||||||
|
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void addAllAsks(List<ResourceRequest> resourceRequest);
|
void addAllAsks(List<ResourceRequest> resourceRequest);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void addAsk(ResourceRequest request);
|
void addAsk(ResourceRequest request);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void removeAsk(int index);
|
void removeAsk(int index);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void clearAsks();
|
void clearAsks();
|
||||||
|
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void addAllReleases(List<ContainerId> releaseContainers);
|
void addAllReleases(List<ContainerId> releaseContainers);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void addRelease(ContainerId container);
|
void addRelease(ContainerId container);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void removeRelease(int index);
|
void removeRelease(int index);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void clearReleases();
|
void clearReleases();
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,46 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.yarn.api.protocolrecords;
|
package org.apache.hadoop.yarn.api.protocolrecords;
|
||||||
|
|
||||||
|
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.api.AMRMProtocol;
|
||||||
import org.apache.hadoop.yarn.api.records.AMResponse;
|
import org.apache.hadoop.yarn.api.records.AMResponse;
|
||||||
|
import org.apache.hadoop.yarn.api.records.Container;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The response sent by the <code>ResourceManager</code> the
|
||||||
|
* <code>ApplicationMaster</code> during resource negotiation via
|
||||||
|
* {@link AMRMProtocol#allocate(AllocateRequest)}.</p>
|
||||||
|
*
|
||||||
|
* <p>The response, via {@link AMResponse}, includes:
|
||||||
|
* <ul>
|
||||||
|
* <li>Response ID to track duplicate responses.</li>
|
||||||
|
* <li>
|
||||||
|
* A reboot flag to let the <code>ApplicationMaster</code> that its
|
||||||
|
* horribly out of sync and needs to reboot.</li>
|
||||||
|
* <li>A list of newly allocated {@link Container}.</li>
|
||||||
|
* <li>A list of completed {@link Container}.</li>
|
||||||
|
* <li>
|
||||||
|
* The available headroom for resources in the cluster for the
|
||||||
|
* application.
|
||||||
|
* </li>
|
||||||
|
* </ul>
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public interface AllocateResponse {
|
public interface AllocateResponse {
|
||||||
|
/**
|
||||||
|
* Get the {@link AMResponse} sent by the <code>ResourceManager</code>.
|
||||||
|
* @return <code>AMResponse</code> sent by the <code>ResourceManager</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public abstract AMResponse getAMResponse();
|
public abstract AMResponse getAMResponse();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public abstract void setAMResponse(AMResponse amResponse);
|
public abstract void setAMResponse(AMResponse amResponse);
|
||||||
}
|
}
|
||||||
|
@ -18,21 +18,85 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.yarn.api.protocolrecords;
|
package org.apache.hadoop.yarn.api.protocolrecords;
|
||||||
|
|
||||||
|
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.api.AMRMProtocol;
|
||||||
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The finalization request sent by the <code>ApplicationMaster</code> to
|
||||||
|
* inform the <code>ResourceManager</code> about its completion via the
|
||||||
|
* {@link AMRMProtocol#finishApplicationMaster(FinishApplicationMasterRequest)}
|
||||||
|
* api.</p>
|
||||||
|
*
|
||||||
|
* <p>The final request includes details such:
|
||||||
|
* <ul>
|
||||||
|
* <li>
|
||||||
|
* {@link ApplicationAttemptId} being managed by the
|
||||||
|
* <code>ApplicationMaster</code>
|
||||||
|
* </li>
|
||||||
|
* <li>Final state of the <code>ApplicationMaster</code></li>
|
||||||
|
* <li>
|
||||||
|
* Diagnostic information in case of failure of the
|
||||||
|
* <code>ApplicationMaster</code>
|
||||||
|
* </li>
|
||||||
|
* <li>Tracking URL</li>
|
||||||
|
* </ul>
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
*/
|
||||||
public interface FinishApplicationMasterRequest {
|
public interface FinishApplicationMasterRequest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the {@link ApplicationAttemptId} being managed by the
|
||||||
|
* <code>ApplicationMaster</code>.
|
||||||
|
* @return <code>ApplicationAttemptId</code> being managed by the
|
||||||
|
* <code>ApplicationMaster</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
ApplicationAttemptId getApplicationAttemptId();
|
ApplicationAttemptId getApplicationAttemptId();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setAppAttemptId(ApplicationAttemptId applicationAttemptId);
|
void setAppAttemptId(ApplicationAttemptId applicationAttemptId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get final state of the <code>ApplicationMaster</code>.
|
||||||
|
* @return final state of the <code>ApplicationMaster</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
String getFinalState();
|
String getFinalState();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setFinalState(String string);
|
void setFinalState(String string);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get diagnostic information if the application failed.
|
||||||
|
* @return diagnostic information if the application failed
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
String getDiagnostics();
|
String getDiagnostics();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setDiagnostics(String string);
|
void setDiagnostics(String string);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the tracking URL for the <code>ApplicationMaster</code>.
|
||||||
|
* @return the tracking URL for the <code>ApplicationMaster</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
String getTrackingUrl();
|
String getTrackingUrl();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setTrackingUrl(String historyUrl);
|
void setTrackingUrl(String historyUrl);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,20 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.yarn.api.protocolrecords;
|
package org.apache.hadoop.yarn.api.protocolrecords;
|
||||||
|
|
||||||
|
import org.apache.hadoop.classification.InterfaceAudience.Public;
|
||||||
|
import org.apache.hadoop.classification.InterfaceStability.Stable;
|
||||||
|
import org.apache.hadoop.yarn.api.AMRMProtocol;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The response sent by the <code>ResourceManager</code> to a
|
||||||
|
* <code>ApplicationMaster</code> on it's completion via the
|
||||||
|
* {@link AMRMProtocol#finishApplicationMaster(FinishApplicationMasterRequest)}
|
||||||
|
* api.</p>
|
||||||
|
*
|
||||||
|
* <p>Currently, this is empty.</p>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public interface FinishApplicationMasterResponse {
|
public interface FinishApplicationMasterResponse {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,19 +18,83 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.yarn.api.protocolrecords;
|
package org.apache.hadoop.yarn.api.protocolrecords;
|
||||||
|
|
||||||
|
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.api.AMRMProtocol;
|
||||||
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The request sent by the <code>ApplicationMaster</code> to
|
||||||
|
* <code>ResourceManager</code> on registration via the
|
||||||
|
* {@link AMRMProtocol#registerApplicationMaster(RegisterApplicationMasterRequest)}
|
||||||
|
* api.</p>
|
||||||
|
*
|
||||||
|
* <p>The registration includes details such as:
|
||||||
|
* <ul>
|
||||||
|
* <li>
|
||||||
|
* {@link ApplicationAttemptId} being managed by the
|
||||||
|
* <code>ApplicationMaster</code>
|
||||||
|
* </li>
|
||||||
|
* <li>Hostname on which the AM is running.</li>
|
||||||
|
* <li>RPC Port</li>
|
||||||
|
* <li>Tracking URL</li>
|
||||||
|
* </ul>
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public interface RegisterApplicationMasterRequest {
|
public interface RegisterApplicationMasterRequest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the {@link ApplicationAttemptId} being managed by the
|
||||||
|
* <code>ApplicationMaster</code>.
|
||||||
|
* @return <code>ApplicationAttemptId</code> being managed by the
|
||||||
|
* <code>ApplicationMaster</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
ApplicationAttemptId getApplicationAttemptId();
|
ApplicationAttemptId getApplicationAttemptId();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setApplicationAttemptId(ApplicationAttemptId applicationAttemptId);
|
void setApplicationAttemptId(ApplicationAttemptId applicationAttemptId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the host on which the <code>ApplicationMaster</code> is running.
|
||||||
|
* @return host on which the <code>ApplicationMaster</code> is running
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
String getHost();
|
String getHost();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setHost(String host);
|
void setHost(String host);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the RPC port on which the <code>ApplicationMaster</code> is responding.
|
||||||
|
* @return the RPC port on which the <code>ApplicationMaster</code> is
|
||||||
|
* responding
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
int getRpcPort();
|
int getRpcPort();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setRpcPort(int port);
|
void setRpcPort(int port);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the tracking URL for the <code>ApplicationMaster</code>.
|
||||||
|
* @return the tracking URL for the <code>ApplicationMaster</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
String getTrackingUrl();
|
String getTrackingUrl();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
void setTrackingUrl(String string);
|
void setTrackingUrl(String string);
|
||||||
}
|
}
|
||||||
|
@ -18,11 +18,53 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.yarn.api.protocolrecords;
|
package org.apache.hadoop.yarn.api.protocolrecords;
|
||||||
|
|
||||||
|
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.api.AMRMProtocol;
|
||||||
import org.apache.hadoop.yarn.api.records.Resource;
|
import org.apache.hadoop.yarn.api.records.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The response sent by the <code>ResourceManager</code> to a new
|
||||||
|
* <code>ApplicationMaster</code> on registration via the
|
||||||
|
* {@link AMRMProtocol#registerApplicationMaster(RegisterApplicationMasterRequest)}
|
||||||
|
* api.</p>
|
||||||
|
*
|
||||||
|
* <p>The response contains critical details such as:
|
||||||
|
* <ul>
|
||||||
|
* <li>Minimum capability for allocated resources in the cluster.</li>
|
||||||
|
* <li>Maximum capability for allocated resources in the cluster.</li>
|
||||||
|
* </ul>
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public interface RegisterApplicationMasterResponse {
|
public interface RegisterApplicationMasterResponse {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the minimum capability for any {@link Resource} allocated by the
|
||||||
|
* <code>ResourceManager</code> in the cluster.
|
||||||
|
* @return minimum capability of allocated resources in the cluster
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public Resource getMinimumResourceCapability();
|
public Resource getMinimumResourceCapability();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void setMinimumResourceCapability(Resource capability);
|
public void setMinimumResourceCapability(Resource capability);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the maximum capability for any {@link Resource} allocated by the
|
||||||
|
* <code>ResourceManager</code> in the cluster.
|
||||||
|
* @return maximum capability of allocated resources in the cluster
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public Resource getMaximumResourceCapability();
|
public Resource getMaximumResourceCapability();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void setMaximumResourceCapability(Resource capability);
|
public void setMaximumResourceCapability(Resource capability);
|
||||||
}
|
}
|
||||||
|
@ -20,31 +20,139 @@
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
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.api.AMRMProtocol;
|
||||||
|
import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The response sent by the <code>ResourceManager</code> the
|
||||||
|
* <code>ApplicationMaster</code> during resource negotiation via
|
||||||
|
* {@link AMRMProtocol#allocate(AllocateRequest)}.</p>
|
||||||
|
*
|
||||||
|
* <p>The response includes:
|
||||||
|
* <ul>
|
||||||
|
* <li>Response ID to track duplicate responses.</li>
|
||||||
|
* <li>
|
||||||
|
* A reboot flag to let the <code>ApplicationMaster</code> that its
|
||||||
|
* horribly out of sync and needs to reboot.</li>
|
||||||
|
* <li>A list of newly allocated {@link Container}.</li>
|
||||||
|
* <li>A list of completed {@link Container}.</li>
|
||||||
|
* <li>
|
||||||
|
* The available headroom for resources in the cluster for the
|
||||||
|
* application.
|
||||||
|
* </li>
|
||||||
|
* </ul>
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Unstable
|
||||||
public interface AMResponse {
|
public interface AMResponse {
|
||||||
|
/**
|
||||||
|
* Should the <code>ApplicationMaster</code> reboot for being horribly
|
||||||
|
* out-of-sync with the <code>ResourceManager</code> as deigned by
|
||||||
|
* {@link #getResponseId()}?
|
||||||
|
*
|
||||||
|
* @return <code>true</code> if the <code>ApplicationMaster</code> should
|
||||||
|
* reboot, <code>false</code> otherwise
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public boolean getReboot();
|
public boolean getReboot();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public void setReboot(boolean reboot);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the last response id.
|
||||||
|
* @return the last response id
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public int getResponseId();
|
public int getResponseId();
|
||||||
|
|
||||||
public List<Container> getNewContainerList();
|
@Private
|
||||||
public Container getNewContainer(int index);
|
@Unstable
|
||||||
public int getNewContainerCount();
|
|
||||||
|
|
||||||
public void setReboot(boolean reboot);
|
|
||||||
public void setResponseId(int responseId);
|
public void setResponseId(int responseId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of newly allocated {@link Container} by the
|
||||||
|
* <code>ResourceManager</code>.
|
||||||
|
* @return list of newly allocated <code>Container</code>
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
|
public List<Container> getNewContainerList();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public Container getNewContainer(int index);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public int getNewContainerCount();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void addAllNewContainers(List<Container> containers);
|
public void addAllNewContainers(List<Container> containers);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void addNewContainer(Container container);
|
public void addNewContainer(Container container);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void removeNewContainer(int index);
|
public void removeNewContainer(int index);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void clearNewContainers();
|
public void clearNewContainers();
|
||||||
|
|
||||||
public void setAvailableResources(Resource limit);
|
/**
|
||||||
|
* Get available headroom for resources in the cluster for the application.
|
||||||
|
* @param limit available headroom for resources in the cluster for the application
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public Resource getAvailableResources();
|
public Resource getAvailableResources();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
|
public void setAvailableResources(Resource limit);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of completed containers.
|
||||||
|
* @return the list of completed containers
|
||||||
|
*/
|
||||||
|
@Public
|
||||||
|
@Stable
|
||||||
public List<Container> getFinishedContainerList();
|
public List<Container> getFinishedContainerList();
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public Container getFinishedContainer(int index);
|
public Container getFinishedContainer(int index);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public int getFinishedContainerCount();
|
public int getFinishedContainerCount();
|
||||||
|
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void addAllFinishedContainers(List<Container> containers);
|
public void addAllFinishedContainers(List<Container> containers);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void addFinishedContainer(Container container);
|
public void addFinishedContainer(Container container);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void removeFinishedContainer(int index);
|
public void removeFinishedContainer(int index);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@Unstable
|
||||||
public void clearFinishedContainers();
|
public void clearFinishedContainers();
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user