Flink是如何实现 End-To-End Exactly-once的?

flink 如何实现端到端的 Exactly-once?

端到端包含 Source, Transformation,Sink 三部分的Exactly-once

  • Source:支持数据的replay,如Kafka的offset。
  • Transformation:借助于checkpoint
  • Sink:Checkpoint + 两阶段事务提交

两阶段提交?

  • 一旦Flink开始做checkpoint操作,就会进入pre-commit "预提交"阶段,同时JobManagerCoordinator会将Barrier注入数据流中。
  • 当所有的barrier在算子中成功进行一遍传递(就是Checkpoint完成),并完成快照后,"预提交"阶段完成。
  • 等所有的算子完成"预提交",就会发起一个commit "提交"动作,但是任何一个"预提交" 失败都会导致Flink回滚到最近的checkpoint。

两阶段提交API

beginTransaction:在开启事务之前,我们在目标文件系统的临时目录中创建一个临时文件,后面在处理数据时将数据写入此文件。

preCommit:在预提交阶段,刷写(flush)文件,然后关闭文件,之后就不能写入到文件了,我们还将为属于下一个检查点的任何后续写入启动新事务。

commit:在提交阶段,我们将预提交的文件原子性移动到真正的目标目录中,请注意,这回增加输出数据可见性的延迟。

abort:在中止阶段,我们删除临时文件。

参考:

https://www.cnblogs.com/kunande/p/17142718.html

相关推荐
青云交1 分钟前
大数据新视界 -- 大数据大厂之 Impala 存储格式转换:从原理到实践,开启大数据性能优化星际之旅(下)(20/30)
大数据·性能优化·数据处理·impala·案例分析·存储格式转换·转换方法
high201110 分钟前
【Apache Paimon】-- 2 -- 核心特性 (0.9.0)
大数据·数据湖·apache paimon
SeaTunnel17 分钟前
解析 Apache SeaTunnel 的任务运行过程
大数据
武子康41 分钟前
大数据-225 离线数仓 - 目前需求分析 指标口径 日志数据采集 taildir source HDFS Sink Agent Flume 优化配置
java·大数据·数据仓库·hadoop·hdfs·数据挖掘·flume
Mephisto.java1 小时前
【大数据学习 | flume】flume之常见的channel组件
大数据·学习·flume
P.H. Infinity1 小时前
【Elasticsearch】01-ES安装
大数据·elasticsearch·jenkins
SlothLu1 小时前
Debezium-MySqlConnectorTask
java·大数据·数据库·多线程·数据库开发·debezium·数据迁移
OceanBase数据库官方博客2 小时前
如何配置 Flink CDC 连接 OceanBase 实现数据实时同步
大数据·flink·oceanbase·分布式数据库
abandondyy2 小时前
ELK Elasticsearch 集群部署
大数据·elk·elasticsearch
hong1616882 小时前
Elasticsearch:管理和排除 Elasticsearch 内存故障
大数据·elasticsearch·jenkins