我正在flink集群中运行一个flink流作业。我需要模拟一个工作失败的场景。我在我的源代码中引入了一个损坏的事件。当该事件发生时,我看到抛出异常的作业和任务已从检查点重新启动。我设置了以下配置:
restart-strategy.fixed-delay.attempts: 1
restart-strategy.fixed-delay.delay: 5 s
但这些配置并没有得到遵守。即使在第一次尝试之后,该任务也会继续恢复。根据文件,第一次尝试后该作业应该失败。我需要模拟工作失败的场景。怎么做?
您可以设置
restart-strategy: none
在这种情况下,作业将直接失败,而不尝试重新启动。
https://ci.apache.org/projects/flink/flink-docs-stable/dev/task_failure_recovery.html#no-重启策略
最简单的方法是创建一个特定的作业,每次处理数据时都会抛出异常,例如在自定义ProcessFunction
中。我不知道你有什么样的工作,但另一件事可能是发送不正确的输入数据,如果你正在读取来自Kafka等来源的数据,这将导致工作失败。
我对此也有类似的困惑。结合测试,我做了一些猜测。restart-strategy.fixed-delay.tempts表示重新启动作业失败时的重试次数。在您的情况下,Flink作业可以成功重新启动,之后,从源中获取损坏的事件并使作业失败。因此,即使在第一次尝试之后,任务也会不断恢复。您可以关闭源或接收器以模拟作业失败,在这种情况下,作业将只重新启动一次失败尝试。