Apache Flink任务提交方式全解析:CLI/REST API/UI对比
【免费下载链接】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 功能对比
| 特性 | CLI | REST API | UI |
|---|---|---|---|
| 任务提交 | ✅ | ✅ | ✅ |
| 任务监控 | ✅ | ✅ | ✅ |
| 保存点管理 | ✅ | ✅ | ❌ |
| 自动化集成 | ❌ | ✅ | ❌ |
| 易用性 | 中等 | 复杂 | 简单 |
| 适合场景 | 手动操作 | 脚本/程序集成 | 可视化管理 |
4.2 选型建议
- 开发调试:优先使用CLI,简单直接且功能全面。
- 生产环境自动化:选择REST API,便于与调度系统集成。
- 日常监控与简单操作:Web UI是最佳选择,直观易用。
五、总结与展望
本文详细介绍了Flink的三种任务提交方式,包括它们的基本使用、高级功能和适用场景。CLI适合手动操作,REST API适合自动化集成,UI适合可视化管理。在实际应用中,可根据具体需求选择合适的方式,也可结合使用以提高效率。
随着Flink的不断发展,这些提交方式也在持续优化。例如,REST API的功能在不断丰富,UI的用户体验也在不断提升。建议持续关注官方文档以获取最新信息。
如果你觉得本文对你有帮助,请点赞、收藏并关注,下期我们将介绍Flink任务的监控与调优技巧。
【免费下载链接】flink 项目地址: https://gitcode.com/gh_mirrors/fli/flink
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



