java - 使用 RestClusterClient 在 Flink 集群上运行已部署的作业
问题描述
我正在尝试使用 Rest 请求在 Flink Cluster 上运行已部署的作业。
我成功使用了一个简单的休息客户端
POST http://localhost:8081/v1/jars/13775a71-0723-4c62-979b-7e9a9de3a0dc_some.jar/run
{
"programArgsList" : ["test1", "test2"]
}
但我想用 Java 做,因为已经有一个 RestClusterClient 我很想使用它,但它的文档很差
从我从代码中看到的情况来看,这个 RestClusterClient 似乎没有这种可能性
看起来它密切关注 CLI 中实现的功能,并在此处记录https://ci.apache.org/projects/flink/flink-docs-stable/ops/cli.html,因此任何run
命令都需要在作业中传递一个 jar。
无法使用此客户端运行已部署的作业。我对吗?
解决方案
Flink 的集群 REST API 旨在与任何 REST 客户端一起使用。RestClusterClient
模块附带的内容flink-clients
是供内部使用的。但是,您也可以通过正确设置的 Flink 实例化它来直接使用它Configuration
。
Configuration
用于检索集群 REST 端点。因此,如果您配置了错误的 REST 地址或错误的 HA 模式,则RestClusterClient
可能无法与集群通信。如果您知道flink-conf.yaml
启动集群的位置,那么我建议您使用GlobalConfiguration#loadConfiguration(configurationDirectory)
它来加载它。这应该给你一个很好的起点。
启动后,RestClusterClient
您可以通过以下方式与集群交互
submitJob
:提交新作业(仅当您部署了会话集群时才支持)requestJobResult
:作业执行的结果;如果这是一个流式作业,那么这可能永远不会完成cancel
:取消给定的工作triggerSavepoint
:触发保存点并返回其路径listJobs
:列出集群上所有当前正在运行的作业- 还有一些电话
推荐阅读
- spring - 两个具有相同 URL 但参数不同的 @GetMapping
- google-cloud-functions - 为什么没有特定于调用 GCP 函数的 IAM 角色?
- typescript - TS 2740 类型“ShadowRoot”缺少“元素”类型中的以下属性:属性、类列表、类名、客户端高度等 63 个
- python - Spotify discord.py api 的 if & else 有问题
- python - Sphinx autoclass 在本地工作,而不是 readthedocs,但其他类和方法在 readthedocs 上工作?
- neural-network - 神经网络 - 训练具有多个条目的 MLP
- json - 如何使用 logstash-logback-encoder 自定义 JSON Logging 的消息属性?
- r - 使用 R 中的 data.table 包从表中生成正确输出的问题
- c# - 如何在 .net 应用程序资源上将后备值设置为英语
- python - 处理后导出的json文件为空