我正在尝试从 Jenkins 将作业部署到 Flink。 到目前为止,我已经弄清楚了如何提交在构建作业中创建的 jar 文件。 现在我想找到任何使用旧 jar 运行的 Flink 作业,优雅地停止它们,然后利用我的新 jar 开始新工作。
API 具有列出作业、取消作业和提交作业的方法。 但是,似乎没有停止作业终结点。关于如何使用 API 优雅地停止作业的任何想法?
即使停止端点没有记录,它确实存在并且行为类似于取消端点。
基本上,这是 Flink REST API 文档中缺少的一点:
停止作业
DELETE
请求/jobs/:jobid/stop
.停止作业,成功的结果
{}
。
对于那些不知道取消和停止之间区别的人(从这里复制(:
取消和停止(流式处理(作业之间的区别如下:
在取消调用中,作业中的操作员会立即收到
cancel()
方法调用以将其取消为 尽快。 如果操作员在取消调用后没有停止,Flink 将开始定期中断线程 直到它停止。"停止"调用是停止正在运行的流式处理作业的一种更优雅的方式。停止仅适用于作业 使用实现
StoppableFunction
接口的源。当用户请求停止作业时, 所有源都将收到stop()
方法调用。作业将继续运行,直到所有源正确关闭。 这允许作业完成所有动态数据的处理。
当我使用 Flink 1.7 时,以下是取消/停止有关此版本的 flink 作业的方法。
已经由我自己测试
-
请求路径:
/jobs/{jobid}
jobid - 标识作业的 32 个字符的十六进制字符串值。
-
请求方法:补丁
-
查询参数:
模式(可选(:指定终止模式的字符串值。支持的值为:"取消、停止"。
-
例
10.xx.xx.xx:50865/jobs/4c88f503005f79fde0f2d92b4ad3ade4?mode=cancel
主机端口在启动纱线时可用
提交作业时可用的 jobid
裁判:
https://ci.apache.org/projects/flink/flink-docs-release-1.7/monitoring/rest_api.html'