使用RestClusterClient

时间:2019-05-10 14:36:16

标签: java rest apache-flink

我正在尝试使用Rest请求在Flink群集上运行已部署的作业。

我使用一个简单的休息客户端成功

POST http://localhost:8081/v1/jars/13775a71-0723-4c62-979b-7e9a9de3a0dc_some.jar/run { "programArgsList" : ["test1", "test2"] }

但是我想从Java做到这一点,因为已经有了RestClusterClient,我很乐意使用它,但是它的文档不多

https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/client/program/rest/RestClusterClient.html

从我从代码中看到的情况来看,此RestClusterClient似乎没有这种可能性

它似乎紧紧遵循CLI中实现的功能,并在https://ci.apache.org/projects/flink/flink-docs-stable/ops/cli.html中进行了说明,因此任何run命令都需要将jar与作业一起传递。

无法与此客户端一起运行已部署的作业。我说的对吗?

1 个答案:

答案 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:列出集群上所有当前正在运行的作业
  • 还有更多电话