首页 > 其他分享 >flink的各个算子在收到barrier的时候会做什么

flink的各个算子在收到barrier的时候会做什么

时间:2023-06-06 11:45:27浏览次数:40  
标签:快照 barrier flink 确认 收到 检查点 算子

在Flink中,各个算子(算子链中的每个算子)在收到 barrier(检查点屏障)时会执行以下操作:

  1. 算子状态快照:算子会触发对其状态的快照操作,以捕获当前状态的一致性快照。这包括算子的运行时状态、缓冲区或累加器等数据。

  2. 处理挂起输入数据:算子会将收到的 barrier 后的数据挂起,不再继续处理。它确保在进行状态快照之前,不会处理从检查点位置之后的数据。

  3. 确认 barrier:算子向上游任务发送确认消息,表示已经收到了 barrier。这个确认消息会向上游任务的算子传播,形成了 barrier 线(barrier alignment),所有算子都要在该 barrier 对齐上进行操作。

  4. 等待上游任务的确认:算子会等待来自所有上游任务的确认消息,以确保所有上游任务都已经收到了 barrier。

  5. 触发检查点:一旦算子收到了所有上游任务的确认消息,它会通知作业管理器(Job Manager)检查点可以继续进行,即向下游任务发送 barrier。

这些操作确保了算子在收到 barrier 时的一致性行为。通过在所有算子上引入 barrier 对齐,Flink能够保证在进行检查点时,所有的算子都具有一致的状态快照,并且不会处理来自检查点位置之后的数据,从而确保了检查点的一致性和正确性。如果有某个算子没有及时发送确认消息或者发生故障,则会导致 barrier 对齐失败,触发故障恢复机制来保证数据一致性。

标签:快照,barrier,flink,确认,收到,检查点,算子
From: https://www.cnblogs.com/lukairui/p/17460105.html

相关文章

  • flink中一个多输入的算子如何决定是否可以往下游算子发送barrier
    在Flink中,多输入的算子在决定是否可以往下发barrier时需要满足以下条件:输入流的barrier对齐:多输入的算子必须要求所有输入流都处于barrier对齐状态,即收到了相同的barrier。这意味着所有输入流的上游任务都已经收到了相同的barrier,并向下游发送了确认消息。所有输入......
  • flink的状态表需要保存多久
    Flink的状态表保存的时间可以根据应用程序的需求进行配置。状态表的保留时间取决于两个因素:状态后端(StateBackend)的配置:Flink支持不同类型的状态后端,如内存、文件系统、RocksDB等。不同的状态后端可以配置不同的状态保留策略。例如,如果使用基于内存的状态后端,状态表的数据通常......
  • flink从检查点恢复时候做什么
    当发生故障时,Flink从最近的一致性检查点中恢复任务的状态。以下是从检查点恢复的主要步骤:加载检查点元数据和状态数据:Flink首先加载最近一次成功的检查点的元数据和持久化的状态数据。检查点的元数据包含了关于检查点的信息,如检查点ID、生成时间和相关的任务信息等。持久化的状......
  • flinkv1.14启动过程分析
    今天阅读了一下flinkv1.14的代码,首先分析一下flink启动的过程。首先分2种,一种是SessionClusterEntrypoint,一种是JobClusterEntrypoint。分别对应session模式和per-job模式。session模式就是一次启动,可以执行多个job,执行完job还有后台进程在等待用户提交新的job。per-job模式......
  • Flink CDC
    第1章CDC简介1.1什么是CDCCDC是ChangeDataCapture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。1.2CDC的种类CDC主要分为基于查询......
  • Flink Table Store 独立孵化启动 ,Apache Paimon 诞生
    2023年3月12日,FlinkTableStore项目顺利通过投票,正式进入Apache软件基金会(ASF)的孵化器,改名为ApachePaimon(incubating)。随着ApacheFlink技术社区的不断成熟和发展,越来越多企业开始利用Flink进行流式数据处理,从而提升数据时效性价值,获取业务实时化效果。与此......
  • Flink实战(七) - Time & Windows编程
    掌握Flink中三种常用的Time处理方式,掌握Flink中滚动窗口以及滑动窗口的使用,了解Flink中的watermark。Flink在流处理工程中支持不同的时间概念。1处理时间(Processingtime)执行相应算子操作的机器的系统时间。当流程序在处理时间运行时,所有基于时间的算子操作(如时间窗口)将使用运行相......
  • Flink中的Window和Time详解
    Window(窗口)Flink认为批处理是流处理的一个特例,所以Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。而Window就是从流处理到批处理的一个桥梁。通常来讲,Window是一种可以把无界数据切割为有界数据块的手段例如,对流中的所有元素进行计数是不可能的,因为通......
  • Flink核心API之DataSet
    DataSetAPIDataSetAPI主要可以分为3块来分析:DataSource、Transformation、Sink。DataSource是程序的数据源输入。Transformation是具体的操作,它对一个或多个输入数据源进行计算处理,例如map、flatMap、filter等操作。DataSink是程序的输出,它可以把Transformation处理之后的数......
  • Flink核心API之Table API和SQL
    TableAPI&SQL注意:TableAPI和SQL现在还处于活跃开发阶段,还没有完全实现Flink中所有的特性。不是所有的[TableAPI,SQL]和[流,批]的组合都是支持的。TableAPI和SQL的由来:Flink针对标准的流处理和批处理提供了两种关系型API,TableAPI和SQL。TableAPI允许用户以一种很直......