如何使用 REST API 停止 Flink 作业

问题描述 投票:0回答:3

我正在尝试将作业从 Jenkins 部署到 Flink。到目前为止,我已经弄清楚如何提交在构建作业中创建的 jar 文件。现在我想找到任何使用旧 jar 运行的 Flink 作业,优雅地停止它们,然后利用我的新 jar 开始新作业。

API 具有列出作业、取消作业和提交作业的方法。但是,似乎没有停止作业端点。关于如何使用 API 优雅地停止作业有什么想法吗?

jenkins apache-flink
3个回答
0
投票

即使停止端点没有记录,它确实存在并且行为与取消端点类似。

基本上,这是 Flink REST API 文档中缺少的一点:

停止工作

DELETE
请求
/jobs/:jobid/stop

停止工作,成功的结果是

{}

 

对于那些不知道取消和停止之间区别的人(复制自此处):

取消和停止(流)作业之间的区别如下:

在取消调用时,作业中的操作员会立即收到

cancel()
方法调用来取消它们: 尽快。 如果操作员在取消调用后没有停止,Flink 将开始定期中断线程 直到停止。

“停止”调用是停止正在运行的流作业的更优雅的方式。停止仅适用于作业 它使用实现

StoppableFunction
接口的源。当用户请求停止作业时, 所有源都会收到
stop()
方法调用。该作业将继续运行,直到所有源正确关闭。 这允许作业完成所有飞行数据的处理。


0
投票

由于我使用的是 Flink 1.7,以下是如何取消/停止该版本的 flink 作业。

已经亲自测试过

  • 请求路径:

    /jobs/{jobid}

    jobid - 标识作业的 32 个字符的十六进制字符串值。

  • 请求方式:PATCH

  • 查询参数:

    mode(可选):指定终止模式的字符串值。支持的值为:“取消、停止”。

  • 示例

    10.xx.xx.xx:50865/jobs/4c88f503005f79fde0f2d92b4ad3ade4?mode=cancel

启动yarn-seesion时主机端口可用

提交职位后即可获得职位编号

参考:

https://ci.apache.org/projects/flink/flink-docs-release-1.7/monitoring/rest_api.html`


0
投票

对于 Flink 1.19,如果以

./bin/start-cluster.sh
启动,Flink 似乎需要向
/jobs/<job id>/yarn-cancel
发出普通的 GET 请求才能取消作业。

似乎没有记录。我通过查看取消工作时 webui 的操作找到了 API。

© www.soinside.com 2019 - 2024. All rights reserved.