当任务出错,出错恢复策略如何解决问题?

当任务出错,出错恢复策略如何解决问题?

展开
收起
詹姆斯邦德00 2021-11-17 17:12:56 1400 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 目前 Flink 默认的 FailoverStrategy 是 RestartPipelinedRegionFailoverStrategy。采用了这个策略后,如果一个 Task 失败了就会重启它所在的 region。这其实跟 Pipelined 数据交换有关系。在 Pipelined 数据交换的节点之间,如果任意一个节点失败了,其相关联的其它节点也会跟着失败。这是为了防止出现数据的不一致。因此为了避免单个 Task 导致多次 Failover,一般的操作是在收到第一个Task failed 时,就把其他的一起 cancel 掉,再一起重启。

    RestartPipelinedRegion 策略除了重启失败任务所在的 Region 外,还会重启它的下游Region 。 原因是任务的产出很多时候是非确定性的,比如说一个record,分发到下游的第一个并发,重跑一次;分发到下游的第二个并发时,一旦这两个下游在不同 region 中,就可能会导致 record 丢失,甚至产生不一样的数据。为了避免这种情况,采用PipelinedRegionFailoverStrategy 会重启失败任务所在的Region 以及它的所有的下游 Region。

    还有一个 RestartAllFailoverStrategy 策略,它会在任意 Task fail 的时候,重启作业中的所有任务。一般情况,这个策略并不被经常用到,但是在一些特殊情况下,比如当任务失败,用户不希望局部运行而是希望所有任务都结束并整体进行恢复,可以用这个策略。

    资料来源:《Apache Flink 必知必会》,下载链接:https://developer.aliyun.com/topic/download?id=1189 

    2021-11-17 19:17:17 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

收录在圈子:
实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache Flink 构建的企业级、高性能实时大数据处理系统,由 Apache Flink 创始团队官方出品,拥有全球统一商业化品牌,完全兼容开源 Flink API,提供丰富的企业级增值功能。
还有其他疑问?
咨询AI助理
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等