Class RestClusterClient<T>
- java.lang.Object
-
- org.apache.flink.client.program.rest.RestClusterClient<T>
-
- All Implemented Interfaces:
AutoCloseable,ClusterClient<T>
public class RestClusterClient<T> extends Object implements ClusterClient<T>
AClusterClientimplementation that communicates via HTTP REST requests.
-
-
Constructor Summary
Constructors Constructor Description RestClusterClient(org.apache.flink.configuration.Configuration config, T clusterId)RestClusterClient(org.apache.flink.configuration.Configuration config, T clusterId, org.apache.flink.runtime.highavailability.ClientHighAvailabilityServicesFactory factory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CompletableFuture<org.apache.flink.runtime.messages.Acknowledge>cancel(org.apache.flink.api.common.JobID jobID)Cancels a job identified by the job id.CompletableFuture<String>cancelWithSavepoint(org.apache.flink.api.common.JobID jobId, String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)Cancels a job identified by the job id and triggers a savepoint.voidclose()CompletableFuture<org.apache.flink.runtime.messages.Acknowledge>disposeSavepoint(String savepointPath)Dispose the savepoint under the given path.CompletableFuture<Map<String,Object>>getAccumulators(org.apache.flink.api.common.JobID jobID, ClassLoader loader)Requests and returns the accumulators for the given job identifier.TgetClusterId()Returns the cluster id identifying the cluster to which the client is connected.CompletableFuture<org.apache.flink.runtime.rest.handler.legacy.messages.ClusterOverviewWithVersion>getClusterOverview()Get an overview of the Flink cluster.org.apache.flink.configuration.ConfigurationgetFlinkConfiguration()Return the Flink configuration object.CompletableFuture<org.apache.flink.runtime.rest.messages.job.JobDetailsInfo>getJobDetails(org.apache.flink.api.common.JobID jobId)Requests the job details.CompletableFuture<org.apache.flink.api.common.JobStatus>getJobStatus(org.apache.flink.api.common.JobID jobId)Requests theJobStatusof the job with the givenJobID.StringgetWebInterfaceURL()Returns an URL (as a string) to the cluster web interface.CompletableFuture<Void>invalidateClusterDataset(org.apache.flink.util.AbstractID clusterDatasetId)Invalidate the cached intermediate dataset with the given id.CompletableFuture<Set<org.apache.flink.util.AbstractID>>listCompletedClusterDatasetIds()Return a set of ids of the completed cluster datasets.CompletableFuture<Collection<org.apache.flink.runtime.client.JobStatusMessage>>listJobs()Lists the currently running and finished jobs on the cluster.CompletableFuture<Void>reportHeartbeat(org.apache.flink.api.common.JobID jobId, long expiredTimestamp)The client reports the heartbeat to the dispatcher for aliveness.CompletableFuture<org.apache.flink.runtime.jobmaster.JobResult>requestJobResult(org.apache.flink.api.common.JobID jobId)Requests theJobResultfor the givenJobID.CompletableFuture<org.apache.flink.runtime.operators.coordination.CoordinationResponse>sendCoordinationRequest(org.apache.flink.api.common.JobID jobId, org.apache.flink.runtime.jobgraph.OperatorID operatorId, org.apache.flink.runtime.operators.coordination.CoordinationRequest request)Sends out a request to a specified coordinator and return the response.<M extends org.apache.flink.runtime.rest.messages.MessageHeaders<R,P,U>,U extends org.apache.flink.runtime.rest.messages.MessageParameters,R extends org.apache.flink.runtime.rest.messages.RequestBody,P extends org.apache.flink.runtime.rest.messages.ResponseBody>
CompletableFuture<P>sendRequest(M messageHeaders, U messageParameters, R request)voidshutDownCluster()Shut down the cluster that this client communicate with.CompletableFuture<String>stopWithDetachedSavepoint(org.apache.flink.api.common.JobID jobId, boolean advanceToEndOfTime, String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)Stops a program on Flink cluster whose job-manager is configured in this client's configuration.CompletableFuture<String>stopWithSavepoint(org.apache.flink.api.common.JobID jobId, boolean advanceToEndOfTime, String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)Stops a program on Flink cluster whose job-manager is configured in this client's configuration.CompletableFuture<String>stopWithSavepoint(org.apache.flink.api.common.JobID jobId, boolean advanceToEndOfTime, String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType, boolean isDetachedMode)CompletableFuture<org.apache.flink.api.common.JobID>submitJob(org.apache.flink.runtime.jobgraph.JobGraph jobGraph)Submit the givenJobGraphto the cluster.CompletableFuture<Long>triggerCheckpoint(org.apache.flink.api.common.JobID jobId, org.apache.flink.core.execution.CheckpointType checkpointType)Triggers a checkpoint for the job identified by the job id.CompletableFuture<String>triggerDetachedSavepoint(org.apache.flink.api.common.JobID jobId, String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)Triggers a detached savepoint for the job identified by the job id.CompletableFuture<String>triggerSavepoint(org.apache.flink.api.common.JobID jobId, String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)Triggers a savepoint for the job identified by the job id.CompletableFuture<org.apache.flink.runtime.messages.Acknowledge>updateJobResourceRequirements(org.apache.flink.api.common.JobID jobId, org.apache.flink.runtime.jobgraph.JobResourceRequirements jobResourceRequirements)UpdateJobResourceRequirementsof a given job.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.flink.client.program.ClusterClient
getAccumulators
-
-
-
-
Method Detail
-
getFlinkConfiguration
public org.apache.flink.configuration.Configuration getFlinkConfiguration()
Description copied from interface:ClusterClientReturn the Flink configuration object.- Specified by:
getFlinkConfigurationin interfaceClusterClient<T>- Returns:
- The Flink configuration object
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceClusterClient<T>
-
getJobDetails
public CompletableFuture<org.apache.flink.runtime.rest.messages.job.JobDetailsInfo> getJobDetails(org.apache.flink.api.common.JobID jobId)
Requests the job details.- Parameters:
jobId- The job id- Returns:
- Job details
-
getJobStatus
public CompletableFuture<org.apache.flink.api.common.JobStatus> getJobStatus(org.apache.flink.api.common.JobID jobId)
Description copied from interface:ClusterClientRequests theJobStatusof the job with the givenJobID.- Specified by:
getJobStatusin interfaceClusterClient<T>
-
requestJobResult
public CompletableFuture<org.apache.flink.runtime.jobmaster.JobResult> requestJobResult(@Nonnull org.apache.flink.api.common.JobID jobId)
Requests theJobResultfor the givenJobID. The method retries multiple times to poll theJobResultbefore giving up.- Specified by:
requestJobResultin interfaceClusterClient<T>- Parameters:
jobId- specifying the job for which to retrieve theJobResult- Returns:
- Future which is completed with the
JobResultonce the job has completed or with a failure if theJobResultcould not be retrieved.
-
submitJob
public CompletableFuture<org.apache.flink.api.common.JobID> submitJob(@Nonnull org.apache.flink.runtime.jobgraph.JobGraph jobGraph)
Description copied from interface:ClusterClientSubmit the givenJobGraphto the cluster.- Specified by:
submitJobin interfaceClusterClient<T>- Parameters:
jobGraph- to submit- Returns:
JobIDof the submitted job
-
cancel
public CompletableFuture<org.apache.flink.runtime.messages.Acknowledge> cancel(org.apache.flink.api.common.JobID jobID)
Description copied from interface:ClusterClientCancels a job identified by the job id.- Specified by:
cancelin interfaceClusterClient<T>- Parameters:
jobID- the job id
-
stopWithSavepoint
public CompletableFuture<String> stopWithSavepoint(org.apache.flink.api.common.JobID jobId, boolean advanceToEndOfTime, @Nullable String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)
Description copied from interface:ClusterClientStops a program on Flink cluster whose job-manager is configured in this client's configuration. Stopping works only for streaming programs. Be aware, that the program might continue to run for a while after sending the stop command, because after sources stopped to emit data all operators need to finish processing.- Specified by:
stopWithSavepointin interfaceClusterClient<T>- Parameters:
jobId- the job ID of the streaming program to stopadvanceToEndOfTime- flag indicating if the source should inject aMAX_WATERMARKin the pipelinesavepointDirectory- directory the savepoint should be written toformatType- a binary format of the savepoint- Returns:
- a
CompletableFuturecontaining the path where the savepoint is located
-
stopWithDetachedSavepoint
public CompletableFuture<String> stopWithDetachedSavepoint(org.apache.flink.api.common.JobID jobId, boolean advanceToEndOfTime, @Nullable String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)
Description copied from interface:ClusterClientStops a program on Flink cluster whose job-manager is configured in this client's configuration. Stopping works only for streaming programs. Be aware, that the program might continue to run for a while after sending the stop command, because after sources stopped to emit data all operators need to finish processing.- Specified by:
stopWithDetachedSavepointin interfaceClusterClient<T>- Parameters:
jobId- the job ID of the streaming program to stopadvanceToEndOfTime- flag indicating if the source should inject aMAX_WATERMARKin the pipelinesavepointDirectory- directory the savepoint should be written toformatType- a binary format of the savepoint- Returns:
- the savepoint trigger id
-
cancelWithSavepoint
public CompletableFuture<String> cancelWithSavepoint(org.apache.flink.api.common.JobID jobId, @Nullable String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)
Description copied from interface:ClusterClientCancels a job identified by the job id and triggers a savepoint.- Specified by:
cancelWithSavepointin interfaceClusterClient<T>- Parameters:
jobId- the job idsavepointDirectory- directory the savepoint should be written toformatType- a binary format of the savepoint- Returns:
- future of path where the savepoint is located
-
triggerSavepoint
public CompletableFuture<String> triggerSavepoint(org.apache.flink.api.common.JobID jobId, @Nullable String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)
Description copied from interface:ClusterClientTriggers a savepoint for the job identified by the job id. The savepoint will be written to the given savepoint directory, orCheckpointingOptions.SAVEPOINT_DIRECTORYif it is null.- Specified by:
triggerSavepointin interfaceClusterClient<T>- Parameters:
jobId- job idsavepointDirectory- directory the savepoint should be written toformatType- a binary format of the savepoint- Returns:
- path future where the savepoint is located
-
triggerCheckpoint
public CompletableFuture<Long> triggerCheckpoint(org.apache.flink.api.common.JobID jobId, org.apache.flink.core.execution.CheckpointType checkpointType)
Description copied from interface:ClusterClientTriggers a checkpoint for the job identified by the job id. The checkpoint will be written to the checkpoint directory for the job.- Specified by:
triggerCheckpointin interfaceClusterClient<T>- Parameters:
jobId- job idcheckpointType- the checkpoint type (configured / full / incremental)
-
triggerDetachedSavepoint
public CompletableFuture<String> triggerDetachedSavepoint(org.apache.flink.api.common.JobID jobId, @Nullable String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType)
Description copied from interface:ClusterClientTriggers a detached savepoint for the job identified by the job id. The savepoint will be written to the given savepoint directory, orCheckpointingOptions.SAVEPOINT_DIRECTORYif it is null. Notice that: the detached savepoint will return with a savepoint trigger id instead of the path future, that means the client will return very quickly.- Specified by:
triggerDetachedSavepointin interfaceClusterClient<T>- Parameters:
jobId- job idsavepointDirectory- directory the savepoint should be written toformatType- a binary format of the savepoint- Returns:
- the savepoint trigger id
-
sendCoordinationRequest
public CompletableFuture<org.apache.flink.runtime.operators.coordination.CoordinationResponse> sendCoordinationRequest(org.apache.flink.api.common.JobID jobId, org.apache.flink.runtime.jobgraph.OperatorID operatorId, org.apache.flink.runtime.operators.coordination.CoordinationRequest request)
Description copied from interface:ClusterClientSends out a request to a specified coordinator and return the response.- Specified by:
sendCoordinationRequestin interfaceClusterClient<T>- Parameters:
jobId- specifies the job which the coordinator belongs tooperatorId- specifies which coordinator to receive the requestrequest- the request to send- Returns:
- the response from the coordinator
-
stopWithSavepoint
public CompletableFuture<String> stopWithSavepoint(org.apache.flink.api.common.JobID jobId, boolean advanceToEndOfTime, @Nullable String savepointDirectory, org.apache.flink.core.execution.SavepointFormatType formatType, boolean isDetachedMode)
-
getAccumulators
public CompletableFuture<Map<String,Object>> getAccumulators(org.apache.flink.api.common.JobID jobID, ClassLoader loader)
Description copied from interface:ClusterClientRequests and returns the accumulators for the given job identifier. Accumulators can be requested while a is running or after it has finished.- Specified by:
getAccumulatorsin interfaceClusterClient<T>- Parameters:
jobID- The job identifier of a job.loader- The class loader for deserializing the accumulator results.- Returns:
- A Map containing the accumulator's name and its value.
-
listJobs
public CompletableFuture<Collection<org.apache.flink.runtime.client.JobStatusMessage>> listJobs()
Description copied from interface:ClusterClientLists the currently running and finished jobs on the cluster.- Specified by:
listJobsin interfaceClusterClient<T>- Returns:
- future collection of running and finished jobs
-
getClusterId
public T getClusterId()
Description copied from interface:ClusterClientReturns the cluster id identifying the cluster to which the client is connected.- Specified by:
getClusterIdin interfaceClusterClient<T>- Returns:
- cluster id of the connected cluster
-
disposeSavepoint
public CompletableFuture<org.apache.flink.runtime.messages.Acknowledge> disposeSavepoint(String savepointPath)
Description copied from interface:ClusterClientDispose the savepoint under the given path.- Specified by:
disposeSavepointin interfaceClusterClient<T>- Parameters:
savepointPath- path to the savepoint to be disposed- Returns:
- acknowledge future of the dispose action
-
listCompletedClusterDatasetIds
public CompletableFuture<Set<org.apache.flink.util.AbstractID>> listCompletedClusterDatasetIds()
Description copied from interface:ClusterClientReturn a set of ids of the completed cluster datasets.- Specified by:
listCompletedClusterDatasetIdsin interfaceClusterClient<T>- Returns:
- A set of ids of the completely cached intermediate dataset.
-
invalidateClusterDataset
public CompletableFuture<Void> invalidateClusterDataset(org.apache.flink.util.AbstractID clusterDatasetId)
Description copied from interface:ClusterClientInvalidate the cached intermediate dataset with the given id.- Specified by:
invalidateClusterDatasetin interfaceClusterClient<T>- Parameters:
clusterDatasetId- id of the cluster dataset to be invalidated.- Returns:
- Future which will be completed when the cached dataset is invalidated.
-
reportHeartbeat
public CompletableFuture<Void> reportHeartbeat(org.apache.flink.api.common.JobID jobId, long expiredTimestamp)
Description copied from interface:ClusterClientThe client reports the heartbeat to the dispatcher for aliveness.- Specified by:
reportHeartbeatin interfaceClusterClient<T>- Parameters:
jobId- The jobId for the client and the job.- Returns:
-
shutDownCluster
public void shutDownCluster()
Description copied from interface:ClusterClientShut down the cluster that this client communicate with.- Specified by:
shutDownClusterin interfaceClusterClient<T>
-
updateJobResourceRequirements
public CompletableFuture<org.apache.flink.runtime.messages.Acknowledge> updateJobResourceRequirements(org.apache.flink.api.common.JobID jobId, org.apache.flink.runtime.jobgraph.JobResourceRequirements jobResourceRequirements)
UpdateJobResourceRequirementsof a given job.- Parameters:
jobId- jobId specifies the job for which to change the resource requirementsjobResourceRequirements- new resource requirements for the provided job- Returns:
- Future which is completed upon successful operation.
-
getClusterOverview
public CompletableFuture<org.apache.flink.runtime.rest.handler.legacy.messages.ClusterOverviewWithVersion> getClusterOverview()
Get an overview of the Flink cluster.- Returns:
- Future with the
cluster overview.
-
getWebInterfaceURL
public String getWebInterfaceURL()
Description copied from interface:ClusterClientReturns an URL (as a string) to the cluster web interface.- Specified by:
getWebInterfaceURLin interfaceClusterClient<T>
-
sendRequest
@VisibleForTesting public <M extends org.apache.flink.runtime.rest.messages.MessageHeaders<R,P,U>,U extends org.apache.flink.runtime.rest.messages.MessageParameters,R extends org.apache.flink.runtime.rest.messages.RequestBody,P extends org.apache.flink.runtime.rest.messages.ResponseBody> CompletableFuture<P> sendRequest(M messageHeaders, U messageParameters, R request)
-
-