Apache flink 弗林克-如何解决错误这项工作是不能停止的
我试图通过flink stop停止工作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 [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没有实现这个接口的原因是什么?我已经扩展了我的答案——原因是它不会提供任何实际的操作好处。