【问题标题】:Flink - how to solve error This job is not stoppableFlink - 如何解决错误这个工作是不可停止的
【发布时间】:2020-06-07 03:23:16
【问题描述】:

我试图通过 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: [Job 终止 (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)

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    为了让 Flink 作业可以停止,它的所有源都必须实现 Stoppable 接口,而在这一点上,仍然很少有人这样做。在 Flink 捆绑的源连接器中,只有 Storm SpoutWrapper、TwitterSource 和 NifiSource 支持停止。

    您可能会使用 stop,但对于大多数目的,cancel 命令更合适。与取消相比,停止唯一可以想象的好处是您可以避免丢失或重复的结果。但是,如果您使用的是实现检查点接口的连接器,例如 Kafka 连接器,那么如何关闭作业并不重要——无论如何,您都可以实现精确一次语义。

    更新:Stoppable 接口在 Flink 1.9 中被删除,stop 命令被重新实现,现在在大多数情况下比cancel 命令更受欢迎。详情请见the documentation

    【讨论】:

    • 谢谢。 flink-kafka 连接器没有实现这个接口的原因是什么?
    • 我已经扩展了我的答案——原因是它不会提供任何真正的运营优势。
    【解决方案2】:

    我使用 cancel 命令终止了 flink streming 作业。

    >flink cancel [JobId]
    >flink cancel 79045f661e3ac9b082f63726bfb61597
    

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 2016-09-19
      • 2012-01-13
      相关资源
      最近更新 更多