Flink重启策略(restart-strategy)优化
index
背景
1、实时任务依赖Zookeeper做高可用,当Zookeeper节点重启,会导致相当一部分任务挂掉;
2、依赖DCache、HBase这类外部系统的任务,稳定性较差,当外部系统抖动很容易就导致任务运行失败。
理想情况下,我们希望在外部依赖出现波动时,任务能重新连接/连接其他服务节点,而实际上,Flink本身也提供了任务自动重启的支持,我们默认使用的是failure-rate重启策略。上述两类都是由于外部系统波动导致任务稳定性下降的问题,通过分析任务日志,任务都是因为重启超过集群配置的失败阈值:10分钟内超过5次失败,然而,任务实际上并没有重启5次。
问题一:为什么外部系统抖动会导致任务触发failure-rate阈值立即失败
问题二:依赖Zookeeper的任务为什么只挂掉一部分
问题分析
-
简单描述下运行时出现异常的处理流程:
Task failed -> TaskExecutor上报JobMaster失败信息 -> 判断是否存在该Task执行信息 -> 根据重启策略判断是否需要重启,根据故障转移策略选择需要重启的所有Task -> 停止需要重启的Task ->更新数据,移除Task执行信息 -> 生成并写入新的执行信息 -> 重新调度启动
详细流程可看: