Apache Flink client library providing programmatic APIs and command-line interfaces for submitting, managing, and monitoring Flink jobs.
—
Complete CLI frontend for Flink operations providing comprehensive command-line access to job submission, cancellation, savepoint management, cluster monitoring, and administrative functions.
Main entry point for the Flink command-line interface, handling argument parsing and command dispatch.
/**
* Main command-line frontend for executing Flink programs and managing clusters
*/
public class CliFrontend {
/**
* Main entry point for CLI operations
* @param args Command-line arguments
*/
public static void main(String[] args);
/**
* Parse command-line arguments and execute the corresponding action
* @param args Command-line arguments
* @return Exit code (0 for success, non-zero for failure)
*/
public int parseAndRun(String[] args);
/**
* Create CLI frontend with default configuration
*/
public CliFrontend();
/**
* Create CLI frontend with custom configuration and command-line implementations
* @param config Flink configuration
* @param customCommandLines Custom command-line implementations
*/
public CliFrontend(Configuration config, List<CustomCommandLine> customCommandLines);
}Usage Examples:
# Submit a job
flink run -c com.mycompany.MyJob /path/to/job.jar --input input.txt
# List running jobs
flink list
# Cancel a job
flink cancel <job-id>
# Create a savepoint
flink savepoint <job-id> [target-directory]
# Stop a job with savepoint
flink stop <job-id> [--savepointPath <path>]Parser for CLI frontend commands and options, handling argument validation and help generation.
/**
* Parser for CLI frontend commands and options
*/
public class CliFrontendParser {
/**
* Parse run command arguments
* @param args Command arguments
* @return Parsed program options
* @throws CliArgsException if parsing fails
*/
public static ProgramOptions parseRunCommand(String[] args) throws CliArgsException;
/**
* Parse cancel command arguments
* @param args Command arguments
* @return Parsed cancel options
* @throws CliArgsException if parsing fails
*/
public static CancelOptions parseCancelCommand(String[] args) throws CliArgsException;
/**
* Parse savepoint command arguments
* @param args Command arguments
* @return Parsed savepoint options
* @throws CliArgsException if parsing fails
*/
public static SavepointOptions parseSavepointCommand(String[] args) throws CliArgsException;
/**
* Parse list command arguments
* @param args Command arguments
* @return Parsed list options
* @throws CliArgsException if parsing fails
*/
public static ListOptions parseListCommand(String[] args) throws CliArgsException;
}Interface for implementing custom command-line options and deployment-specific configurations.
/**
* Interface for custom command-line implementations
*/
public interface CustomCommandLine {
/**
* Check if this command line handles the given options
* @param commandLine Parsed command line
* @return true if this implementation handles the options
*/
boolean isActive(CommandLine commandLine);
/**
* Get the command line options for this implementation
* @return Apache Commons CLI Options
*/
Options getOptions();
/**
* Create cluster descriptor from parsed command line
* @param commandLine Parsed command line
* @return Cluster descriptor
* @throws FlinkException if creation fails
*/
ClusterDescriptor<?> createClusterDescriptor(CommandLine commandLine) throws FlinkException;
/**
* Get cluster ID from parsed command line
* @param commandLine Parsed command line
* @return Cluster ID or null if not applicable
*/
@Nullable
String getClusterId(CommandLine commandLine);
}Type-safe option classes for different CLI commands.
/**
* Base class for command-line options
*/
public abstract class CommandLineOptions {
public String getCommandLine();
}
/**
* Options for program execution commands
*/
public class ProgramOptions extends CommandLineOptions {
public String getJarFilePath();
public String getEntryPointClassName();
public String[] getProgramArgs();
public int getParallelism();
public boolean getDetachedMode();
public SavepointRestoreSettings getSavepointRestoreSettings();
}
/**
* Options for job cancellation commands
*/
public class CancelOptions extends CommandLineOptions {
public String getJobId();
public boolean isWithSavepoint();
public String getTargetDirectory();
}
/**
* Options for savepoint management commands
*/
public class SavepointOptions extends CommandLineOptions {
public String getJobId();
public String getSavepointPath();
public boolean isDispose();
public SavepointFormatType getFormatType();
}
/**
* Options for job listing commands
*/
public class ListOptions extends CommandLineOptions {
public boolean getShowRunning();
public boolean getShowScheduled();
public boolean getShowAll();
}
/**
* Options for job stop commands
*/
public class StopOptions extends CommandLineOptions {
public String getJobId();
public boolean isWithDrain();
public String getSavepointPath();
}CLI deployer for application clusters, handling application-mode specific deployment workflows.
/**
* CLI deployer for application clusters
*/
public class ApplicationDeployer {
/**
* Deploy application to cluster
* @param config Flink configuration
* @param applicationConfiguration Application configuration
* @param programOptions Program options from CLI
* @param customCommandLines Available custom command lines
* @return Cluster client provider
* @throws Exception if deployment fails
*/
public static ClusterClientProvider<?> deploy(
Configuration config,
ApplicationConfiguration applicationConfiguration,
ProgramOptions programOptions,
List<CustomCommandLine> customCommandLines
) throws Exception;
}Utility classes for common CLI operations and configuration handling.
/**
* Utilities for working with program options
*/
public class ProgramOptionsUtils {
/**
* Create packaged program from options
* @param options Program options
* @param config Flink configuration
* @return Packaged program
* @throws Exception if creation fails
*/
public static PackagedProgram createPackagedProgram(
ProgramOptions options,
Configuration config
) throws Exception;
}
/**
* Utilities for dynamic property handling
*/
public class DynamicPropertiesUtil {
/**
* Parse dynamic properties from command line
* @param dynamicProperties Array of property strings
* @return Configuration with parsed properties
*/
public static Configuration parseFlinkProperties(String[] dynamicProperties);
}
/**
* Exception for CLI argument parsing errors
*/
public class CliArgsException extends Exception {
public CliArgsException(String message);
public CliArgsException(String message, Throwable cause);
}The CLI frontend handles various error conditions and provides meaningful error messages:
CliArgsException for malformed command-line argumentsProgramInvocationException for program execution failuresClusterDeploymentException and ClusterRetrieveException for deployment issuesFileNotFoundException for missing JAR files or configurationCommon error patterns include validation of required arguments, file existence checks, and cluster connectivity verification before attempting operations.
Install with Tessl CLI
npx tessl i tessl/maven-org-apache-flink--flink-clients