如何使用REST API停止Flink作业

时间:2017-08-04 14:47:25

标签: jenkins apache-flink

我正在尝试从Jenkins部署到Flink的工作。到目前为止,我已经想出了如何提交在构建作业中创建的jar文件。现在我想找到任何使用旧jar运行的Flink作业,优雅地停止它们,并利用我的新jar启动一个新工作。

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

2 个答案:

答案 0 :(得分:0)

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

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

停止工作

DELETE请求 /jobs/:jobid/stop

停止工作,成功的结果是{}

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

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

在取消呼叫中,作业中的操作员立即收到cancel()方法调用以取消它们 尽快。 如果操作员在取消调用后没有停止,Flink将定期开始中断线程 直到它停止。

“停止”呼叫是一种更优雅的方式来停止正在运行的流媒体作业。停止仅适用于工作 它使用实现StoppableFunction接口的源。当用户请求停止工作时 所有来源都会收到stop()方法调用。在所有资源正常关闭之前,该工作将继续运行。 这允许作业完成处理所有飞行数据。

答案 1 :(得分:0)

当我使用Flink 1.7时,以下是有关此版本的取消/停止flink作业的方法。

已由我自己测试

  • 请求路径: /jobs/{jobid}

      

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

  • 请求方法: PATCH

  • 查询参数:

      

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

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

  

启动纱线播种时提供一个端口可用

     提交工作时,

工作ID可用

参考:

  

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