Flink是如何保证Exactly-once语义?
发布时间:2022-09-02 16:59:46
发布人:wjy
Flink通过实现两阶段提交和状态保存来实现端到端的一致性语义。
分为以下几个步骤:
开始事务( beginTransaction ) 创建一个临时文件夹,来写把数据写入到这个文件夹里面
预提交( preCommit ) 将内存中缓存的数据写入文件并关闭
正式提交( commit ) 将之前写完的临时文件放入目标目录下。
这代表着最终的 数据会有一些延迟
丢弃( abort ) 丢弃临时文件 若失败发生在预提交成功后, 正式提交前。 可以根据状态来提交预提交的数据, 也可删除预提交的数据。
下一篇Hive 排序(重点)