Apache Flink任务提交方式全解析:CLI/REST API/UI对比

Apache Flink任务提交方式全解析:CLI/REST API/UI对比

【免费下载链接】flink 【免费下载链接】flink 项目地址: https://gitcode.com/gh_mirrors/fli/flink

你还在为选择哪种Flink任务提交方式而困惑?本文将全面对比CLI(命令行界面)、REST API和UI三种任务提交方式,帮助你根据实际场景选择最适合的方案。读完本文,你将了解每种方式的操作步骤、适用场景及优缺点,并掌握如何高效提交和管理Flink任务。

一、CLI(命令行界面):最直接的提交方式

1.1 基本提交命令

Flink的CLI工具位于bin/flink,支持多种任务管理操作。最常用的提交命令如下:

$ ./bin/flink run \
      --detached \
      ./examples/streaming/StateMachineExample.jar

其中--detached参数表示后台运行任务,提交后命令会立即返回。提交成功后,会输出任务ID,用于后续管理。

1.2 任务管理功能

CLI支持丰富的任务生命周期管理功能,包括:

  • 查看任务列表

    $ ./bin/flink list
    

    该命令会显示所有运行中或调度中的任务,如docs/content.zh/docs/deployment/cli.md中所述。

  • 创建保存点(Savepoint)

    $ ./bin/flink savepoint \
          $JOB_ID \ 
          /tmp/flink-savepoints
    

    保存点可用于保存任务状态,以便后续恢复。

  • 停止任务

    $ ./bin/flink stop \
          --savepointPath /tmp/flink-savepoints \
          $JOB_ID
    

    该命令会优雅地停止任务并创建最终的保存点。

1.3 高级功能

CLI还支持提交PyFlink任务,例如:

$ ./bin/flink run --python examples/python/table/word_count.py

更多Python相关选项可参考docs/content.zh/docs/deployment/cli.md中的"Submitting PyFlink Jobs"部分。

二、REST API:自动化集成的首选

2.1 API概述

Flink提供REST API用于任务管理,默认监听8081端口,可通过修改配置文件中的rest.port参数调整。API已版本化,访问时需在URL前加上版本前缀,如/v1/jobs

2.2 常用API端点

  • 提交任务:通过POST /v1/jars/upload上传JAR包,然后使用POST /v1/jars/{jarId}/run提交任务。
  • 获取任务列表GET /v1/jobs
  • 获取任务详情GET /v1/jobs/{jobId}
  • 停止任务POST /v1/jobs/{jobId}/stop

详细API文档可参考docs/content.zh/docs/ops/rest_api.md

2.3 使用示例

以下是使用curl提交任务的示例:

# 上传JAR包
curl -X POST -H "Content-Type: application/octet-stream" --data-binary @examples/streaming/StateMachineExample.jar http://localhost:8081/v1/jars/upload

# 提交任务
curl -X POST http://localhost:8081/v1/jars/:jarId/run -d '{"programArgs": "--input-topic test --output-topic result"}'

三、UI(Web界面):可视化管理平台

3.1 访问UI

启动Flink集群后,可通过http://<JobManager主机名>:8081访问Web UI。Standalone模式下启动集群的命令为:

bin/start-cluster.sh

集群架构如图所示(引自docs/content.zh/docs/deployment/resource-providers/standalone/overview.md):

{{}}

3.2 UI功能

Web UI提供直观的任务管理界面,主要功能包括:

  • 任务提交:通过"Submit New Job"上传JAR包并提交任务。
  • 任务监控:在"Dashboard"页面查看任务状态、并行度、Checkpoint等信息。
  • 日志查看:在"Task Managers"页面可查看各TaskManager的日志。

3.3 高可用配置

在高可用模式下,多个JobManager会运行各自的UI实例。可通过修改conf/masters文件配置多个JobManager,例如:

localhost:8081
localhost:8082

详细配置方法见docs/content.zh/docs/deployment/resource-providers/standalone/overview.md中的"High-Availability with Standalone"部分。

四、三种方式对比与选型建议

4.1 功能对比

特性CLIREST APIUI
任务提交
任务监控
保存点管理
自动化集成
易用性中等复杂简单
适合场景手动操作脚本/程序集成可视化管理

4.2 选型建议

  • 开发调试:优先使用CLI,简单直接且功能全面。
  • 生产环境自动化:选择REST API,便于与调度系统集成。
  • 日常监控与简单操作:Web UI是最佳选择,直观易用。

五、总结与展望

本文详细介绍了Flink的三种任务提交方式,包括它们的基本使用、高级功能和适用场景。CLI适合手动操作,REST API适合自动化集成,UI适合可视化管理。在实际应用中,可根据具体需求选择合适的方式,也可结合使用以提高效率。

随着Flink的不断发展,这些提交方式也在持续优化。例如,REST API的功能在不断丰富,UI的用户体验也在不断提升。建议持续关注官方文档以获取最新信息。

如果你觉得本文对你有帮助,请点赞、收藏并关注,下期我们将介绍Flink任务的监控与调优技巧。

【免费下载链接】flink 【免费下载链接】flink 项目地址: https://gitcode.com/gh_mirrors/fli/flink

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值