zoukankan      html  css  js  c++  java
  • Flink 1.9 故障恢复策略(failover)

    当 Task 发生故障时,Flink 需要重启出错的 Task 以及其他受到影响的 Task ,以使得作业恢复到正常执行状态。

    Flink 通过重启策略和故障恢复策略来控制 Task 重启:重启策略决定是否可以重启以及重启的间隔;故障恢复策略决定哪些 Task 需要重启。

    全图重启故障恢复策略

    在全图重启故障恢复策略下,Task 发生故障时会重启作业中的所有 Task 进行故障恢复。

    基于 Region 的局部重启故障恢复策略

    该策略会将作业中的所有 Task 划分为数个 Region。当有 Task 发生故障时,它会尝试找出进行故障恢复需要重启的最小 Region 集合。
    相比于全局重启故障恢复策略,这种策略在一些场景下的故障恢复需要重启的 Task 会更少。

    此处 Region 指以 Pipelined 形式进行数据交换的 Task 集合。也就是说,Batch 形式的数据交换会构成 Region 的边界。
    - DataStream 和 流式 Table/SQL 作业的所有数据交换都是 Pipelined 形式的。
    - 批处理式 Table/SQL 作业的所有数据交换默认都是 Batch 形式的。
    - DataSet 作业中的数据交换形式会根据 [ExecutionConfig]({{ site.baseurl }}/zh/dev/execution_configuration.html)
    中配置的 [ExecutionMode]({{ site.javadocs_baseurl }}/api/java/org/apache/flink/api/common/ExecutionMode.html)
    决定。

    需要重启的 Region 的判断逻辑如下:
    1. 出错 Task 所在 Region 需要重启。
    2. 如果要重启的 Region 需要消费的数据有部分无法访问(丢失或损坏),产出该部分数据的 Region 也需要重启。
    3. 需要重启的 Region 的下游 Region 也需要重启。这是出于保障数据一致性的考虑,因为一些非确定性的计算或者分发会导致同一个
    Result Partition 每次产生时包含的数据都不相同。

    Region 的局部重启故障恢复策略实现

    1. 根据ExecutionGraph 构建 FailoverTopology

  • 相关阅读:
    Xcode 配置常用变量(SRCROOT, PROJECT_DIR, PROJECT_NAME)
    Git submodule实战
    Charles抓Https的包
    Vue-Quill-Editor 富文本编辑器的使用
    vue计算属性无法监听到数组内部变化
    移动端键盘弹起导致底部按钮上浮解决方案
    js中数组删除 splice和delete的区别,以及delete的使用
    js实现复制input的value到剪切板
    treetable
    vue中状态管理vuex的使用分享
  • 原文地址:https://www.cnblogs.com/mrpei/p/flinkfailover.html
Copyright © 2011-2022 走看看