Apache flink 弗林克-如何解决错误这项工作是不能停止的

Apache flink 弗林克-如何解决错误这项工作是不能停止的,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我试图通过flink stop停止工作 flink stop [jobid] 但是CLI抛出错误,不允许我停止作业。我可以取消它原因可能是什么? 正在停止作业c7196bb1d21d679efed73770a4e4f9ed ------------------------------------------------------------程序已完成,但出现以下异常: org.apache.flink.util.FlinkException:无法停止作业 c7196bb1d21d679efe

我试图通过flink stop停止工作

flink stop [jobid]
但是CLI抛出错误,不允许我停止作业。我可以取消它原因可能是什么?

正在停止作业c7196bb1d21d679efed73770a4e4f9ed

------------------------------------------------------------程序已完成,但出现以下异常:

org.apache.flink.util.FlinkException:无法停止作业 c7196bb1d21d679efed73770a4e4f9ed。 位于org.apache.flink.client.cli.CliFrontend.lambda$stop$5(CliFrontend.java:557) 位于org.apache.flink.client.cli.CliFrontend.runClusterAction(CliFrontend.java:988) 位于org.apache.flink.client.cli.CliFrontend.stop(CliFrontend.java:550) 位于org.apache.flink.client.cli.CliFrontend.parseParameters(CliFrontend.java:1065) 位于org.apache.flink.client.cli.CliFrontend.lambda$main$11(CliFrontend.java:1129) 位于org.apache.flink.runtime.security.NoOpSecurityContext.runsecuried(NoOpSecurityContext.java:30) 位于org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1129) 原因:java.util.concurrent.ExecutionException: org.apache.flink.runtime.rest.util.RestClientException:[作业 终止(停止)失败:此作业不可停止。] 位于java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) 位于java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915) 位于org.apache.flink.client.program.rest.RestClusterClient.stop(RestClusterClient.java:392) 位于org.apache.flink.client.cli.CliFrontend.lambda$stop$5(CliFrontend.java:555) ... 6更多原因:org.apache.flink.runtime.rest.util.RestClientException:[作业] 终止(停止)失败:此作业不可停止。] 位于org.apache.flink.runtime.rest.RestClient.parseResponse(RestClient.java:351) 位于org.apache.flink.runtime.rest.RestClient.lambda$submitRequest$3(RestClient.java:335) 位于java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:952) 位于java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926) 位于java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 运行(Thread.java:748)


要使Flink作业可停止,它的所有源都必须实现可停止接口,在这一点上,很少有人能够实现。在与Flink捆绑的源连接器中,只有Storm Spootwrapper、TwitterSource和NifiSource支持停止

看起来您应该使用stop,但对于大多数情况,cancel命令更合适。与取消相反,停止的唯一好处是可以避免丢失或重复的结果。但是,如果您使用的是实现检查点接口的连接器,例如Kafka连接器,那么无论您如何关闭作业,您都可以实现一次


更新:Flink 1.9中删除了
Stoppable
接口,重新实现了
stop
命令,现在在大多数情况下优于
cancel
命令。有关更多详细信息,请参阅。

我使用了取消命令来终止flink-streming作业

>flink cancel [JobId]
>flink cancel 79045f661e3ac9b082f63726bfb61597

谢谢flink kafka connector没有实现这个接口的原因是什么?我已经扩展了我的答案——原因是它不会提供任何实际的操作好处。