如何模拟Flink流作业失败方案

时间:2020-10-13 10:38:30

标签: apache-flink flink-streaming

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

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

但是这些配置没有兑现。即使在第一次尝试后,任务仍保持恢复。根据文档,第一次尝试后作业应失败。我需要模拟作业失败的情况。怎么做?

3 个答案:

答案 0 :(得分:1)

最简单的方法是创建一个特定的作业,该作业每次在处理数据时都会抛出异常,例如在自定义columns = ["group", "number_of_days"] df_features = pd.DataFrame([["a", 3], ["b", 6],], columns=columns) df_features 内部。我不知道您在那里从事的工作是什么,但是另一件事可能是发送不正确的输入数据,如果您正在从某些来源(例如Kafka)读取数据,则会导致该工作失败。

答案 1 :(得分:1)

您可以设置

restart-strategy: none

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

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

答案 2 :(得分:0)

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