首页 > 其他分享 >flink

flink

时间:2022-12-07 15:47:59浏览次数:40  
标签:状态 Barrier flink 写入 检查点 提交 数据

Flink端到端的一致性

- source端(kafka consumer)

 偏移量保存下来, 如果后续任务出现了故障,恢复的时候可以由连接器重置偏移量,重新 消费数据,保证一致性。

- 内部 (checkpoint 机制)

• 基于 Chandy-Lamport 算法的分布式快照算法
• 将检查点的保存和数据处理分离开,不暂停整个应用
检查点分界线(Checkpoint Barrier,检查点屏障)
• Flink 的检查点算法用到了一种称为分界线(barrier)的特殊 数据形式,用来把一条流上数据按照不同的检查点分开
• 分界线之前到来的数据导致的状态更改,都会被包含在当前 分界线所属的检查点中;而基于分界线之后的数据导致的所 有更改,就会被包含在之后的检查点中
过程:
1 某一个程序正常执行(2条输入流/两个并行度皆可),某一时刻,jobManger向每个Source 任务发送新的检查点id信息,启动最初的检查点。
2 数据源将它们的状态写入检查点,发出一个检查点的barrier,状态后端待状态存入检查点,通知Source任务,Source向jobManger确认检查点完成。
3 Barrier向下游发送,操作任务会等待所有的相同Barrier到达,先到达的等后到达的,此时数据缓存(后来者居上的数据),继续等其他分区的barrier到达。
4 到达后,任务将状态保存到状态后端,Barrier继续向下游转发,任务继续执行
5 Sink向jobmanger确认状态保存到checkpoint,所有任务到达,则检查点完成。

- sink(kafka producer)**

下级存储支持事务:Flink 可以通过实现两阶段提交和状态保存来实现端到端的一致性 语义。 分为以下几个步骤:

1)开始事务(beginTransaction)创建一个临时文件夹,来写把数据写入到这个文件夹里面
2)预提交(preCommit)将内存中缓存的数据写入文件并关闭
3)正式提交(commit)将之前写完的临时文件放入目标目录下。这代表着最终的数据 会有一些延迟
4)丢弃(abort)丢弃临时文件
5)若失败发生在预提交成功后,正式提交前。可以根据状态来提交预提交的数据,也可删除预提交的数据。

如果下级存储不支持事务:
具体实现是幂等写入,需要下级存储具有幂等性写入特性。

 

标签:状态,Barrier,flink,写入,检查点,提交,数据
From: https://www.cnblogs.com/xieqisheng666/p/16963254.html

相关文章

  • Flink端到端的一致性
    Flink端到端的一致性-source端(kafkaconsumer) 偏移量保存下来,如果后续任务出现了故障,恢复的时候可以由连接器重置偏移量,重新消费数据,保证一致性。-内部(checkpoin......
  • 实时数仓原来如此:Kafka+Flink+Hudi
    原来使用kafka消费者直接进行mysql数据同步,现在发现当时只考虑了数据的同步,对于后续数据的存储和使用没有考虑全面。面对大量流式数据,面向的是应用,数据同步之后,数据如何存......
  • Flink Plan Visualizer | Apache Flink Machine Learning Library & Apache
    ApacheFlinkMachineLearningLibrary|ApacheFlinkMachineLearningLibraryhttps://nightlies.apache.org/flink/flink-ml-docs-stable/QuickStart|ApacheFli......
  • Flink SQL管理平台flink-streaming-platform-web安装搭建
    我的gitee地址:https://gitee.com/ddxygq/bigdata-technical-pai最近看到有人在用flinksql的页面管理平台,大致看了下,尝试安装使用,比原生的flinksql界面确实好用多了,我们......
  • flink sql 程序消费kafka数据到mysql设置参数connector.url问题汇总
    1.问题现象:使用flinksql程序消费kafka数据写入mysql时,使用TVF表值函数,START_ENENT_TIME和END_ENENT_TIME始终比消费时间小大约13小时。解决办法在写入mysql的sink......
  • Flink on Yarn三部曲之三:提交Flink任务
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本文是《FlinkonYarn三部曲》系列的终篇,先简单回顾前面的内容......
  • Flink的时间语义,以及使用场景
    有哪些时间语义:EventTime  ProcessingTime  IngestionTime使用场景:EventTime:数据本身携带时间,事件达到Flink之前就已经确定的。ProcessingTime:需要低延迟......
  • Flink on Yarn三部曲之二:部署和设置
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本文是《FlinkonYarn三部曲》系列的第二篇,上一篇《FlinkonY......
  • 大数据学习之Flink(六)
    FlinkSQL1、SQL-ClientFlink提供的SQL客户端准备工作启动yarn-sessionyarn-session.sh-d启动FlinkSQL客户端sql-client.sh2、数据源Kafka准备工作......
  • flink开发指南
    flink开发指南目录flink开发指南flink1.13.5技巧flinkpom常见BugNonewdatasinkshavebeendefinedflink本地调试启动webUI指定portxxDroolsWorkbenchwrite-hba......