是的,我们用的pipelined region的Failover策略,region切分这块没找到具体规则的文档。 但我们作业只有一个taskmanager,同时并行度为6,逻辑是从kafka消费处理后写到下游kafka。从日志以及拓扑中来看,猜测我们的作业应该只能按并行度切分成6个,故障的时候就直接超过了。
不过还有点疑问,希望可以解答下哈 1. 对于这种FailoverStrategy+pipeline region的,best practice应该要如何比较好 2. 测试主动kill taskmanager的,因为只有一个taskmanager,预期行为是否应该也是超过重试次数呢 作业jm日志以及拓扑图 [cid:a6f5540c-def2-4ece-8bde-43ef7e11c6f1] [cid:54a76182-bb60-49bd-aeaa-48d68a01f14b] ________________________________ 发件人: 胡伟华 <huweihua....@gmail.com> 发送时间: 2022年3月1日 14:07 收件人: user-zh@flink.apache.org <user-zh@flink.apache.org> 主题: Re: Flink FailureRateRestartStrategy策略异常 Hi, 家锹 你应该使用了 pipelined region 的 Failover Strategy,这种模式下会将作业划分为多个 region,每次故障恢复只重启涉及到的 region. 单台机器故障时,如果多个 region 的 task 同时部署在这台机器上,那这些涉及到的 region 都会触发 failover,以至于达到了 FailureRateRestartStrategy 配置的重启上限,导致作业退出。 至于主动 kill TaskManager 作业重启而不退出,应该和 TaskManager 上运行的 Task 数量相关。 可以参考社区文档:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/ops/state/task_failure_recovery/#restart-pipelined-region-failover-strategy > 2022年3月1日 上午10:34,刘 家锹 <ljq1120799...@outlook.com> 写道: > > 你好,伙伴们 > 我们最近碰到一个关于FailureRateRestartStrategy策略的问题,有点困惑。情况是这样子的: > > Flink版本:0.10.1 > 部署方式: on Yarn > FailureRateRestartStrategy配置:failuresIntervalMS=60000,backoffTimeMS=15000,maxFailuresPerInterval=4 > > 当时我们hadoop集群的一台机器假死卡住,而Flink任务的TaskManager就运行在这台机器上。机器故障时,JobManager收到了heartbeat超时异常,从日志上看是连续抛出的4次超时异常(每个异常抛出时间间隔10ms左右)。紧接着就打印触发了FailureRateRestartStrategy策略上限,把整个Flink任务退出了。 > 据我从文档所了解,当TaskManager异常,JobManager应该首先尝试起一个新的TaskManager,再尝试重启恢复任务。但从当时的日志来看并没有。 > 奇怪的是,如果我测试直接kill掉TaskManager的话,是会触发作业重启的。 > > 有点困惑,希望能得到社区伙伴们的帮助,感谢 > 日志都贴到附件上了