我正在尝试从Jenkins部署到Flink的工作。到目前为止,我已经想出了如何提交在构建作业中创建的jar文件。现在我想找到任何使用旧jar运行的Flink作业,优雅地停止它们,并利用我的新jar启动一个新工作。
API具有列出作业,取消作业和提交作业的方法。但是,似乎没有停止作业终点。关于如何使用API优雅地停止工作的任何想法?
答案 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`