如何重新启动 flink 作业以使用添加的 TaskManager

How to restart flink job to use added TaskManager

我正在测试 Flink 1.3.0 中的弹性特性。我有一份启用检查点和固定延迟重启策略的工作。当我终止其中一个 TaskManager JVM 时,一段时间后作业会在剩余节点上正确重新启动。但是,当我添加一个新节点时,作业不会自动重新启动以使用它。

我尝试使用 bin/flink stop <jobId> 但它总是给我 java.lang.IllegalStateException: Job with ID <jobId> is not stoppable.

如何重新启动作业以使用附加节点?

Flink 1.3 不提供动态缩放,也不会自动重启作业以利用新的可用资源。要在这种情况下重新启动作业,您应该创建一个保存点,增加并行度,然后从保存点重新启动作业。您可以使用这样的保存点取消作业:

flink cancel -s [targetDirectory] <jobID>

然后通过

重启
flink run -s <savepointPath> ...

有关保存点的更多详细信息,请参阅 CLI docs and savepoint docs,但您可以将保存点视为用户触发的检查点。

Apache Flink® at MediaMath: Rescaling Stateful Applications in Production 是来自 data Artians 的最新博客 post,其中详细介绍了重新缩放的内部工作原理。