我试图通过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.runSecured(NoOpSecurityContext.java:30) 在org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1129) 引起原因:java.util.concurrent.ExecutionException: org.apache.flink.runtime.rest.util.RestClientException:[作业 终止(STOP)失败:此作业不可停止。] 在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:[作业 终止(STOP)失败:此作业不可停止。] 在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) 在java.lang.Thread.run(Thread.java:748)
答案 0 :(得分:0)
要使Flink作业可停止,它的所有源都必须实现Stoppable接口,在这种情况下,仍然很少有这样做。在与Flink捆绑在一起的源连接器中,只有Storm SpoutWrapper,TwitterSource和NifiSource支持停止。
您似乎应该使用Stop,但是对于大多数目的,cancel命令更为合适。与取消相反,停止的唯一可想到的好处是可以避免结果丢失或重复。但是,如果您使用的是实现检查点接口的连接器(例如Kafka连接器),则关闭作业的方式都没关系-无论如何,您都可以实现一次语义。
答案 1 :(得分:0)
我使用了 cancel 命令来终止flink strem作业。
function check(arr, el) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] === el) {
return true;
}
}
return false;
}