如何模拟flink streaming job失败场景

How to simulate flink streaming job failure scenario

我是 运行 flink 集群中的一个 flink 流作业。我需要模拟一个工作失败的场景。我在源代码中引入了损坏的事件。当该事件发生时,我看到作业抛出异常并且任务已从检查点重新启动。我设置了以下配置:

restart-strategy.fixed-delay.attempts: 1
restart-strategy.fixed-delay.delay: 5 s

但是这些配置没有兑现。即使在第一次尝试后,任务也会继续恢复。根据文件,第一次尝试后作业应该失败。我需要模拟工作失败的场景。怎么做?

最简单的方法是创建一个特定的作业,每次处理数据时都会抛出异常,例如在自定义 ProcessFunction 内部。我不知道你在那里做什么工作,但另一件事可能是发送不正确的输入数据,如果你从某个来源读取数据,比如 Kafka,这将导致工作失败。

可以设置

restart-strategy: none

在这种情况下,作业将直接失败,而不会尝试重新启动。

https://ci.apache.org/projects/flink/flink-docs-stable/dev/task_failure_recovery.html#no-restart-strategy

我也有类似的困惑。结合测试,我做了一些猜测。 restart-strategy.fixed-delay.attempts表示重启作业失败时的重试次数。在您的情况下,Flink 作业可以成功重启,之后,从源中获取损坏的事件并使作业失败。因此,即使在第一次尝试后,任务也会继续恢复。您可以关闭源或接收器以模拟作业失败,在这种情况下作业将仅重新启动失败尝试一次。