我正在尝试使用Rest请求在Flink群集上运行已部署的作业。
我使用一个简单的休息客户端成功
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与作业一起传递。
无法与此客户端一起运行已部署的作业。我说的对吗?
答案 0 :(得分:0)
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
:列出集群上所有当前正在运行的作业