MAPREDUCE服务 MRS-Flink任务开发建议:使用EXACTLY ONCE流处理语义保证端到端的一致性
使用EXACTLY ONCE流处理语义保证端到端的一致性
流处理语义有三种:EXACTLY ONCE、AT LEAST ONCE、AT MOST ONCE。
- AT MOST ONCE:无法保证数据处理的完整性,但性能相比最好。
- AT LEAST ONCE:可以保证数据处理的完整性,但无法保证数据处理的准确性,性能适中。
- EXACTLY ONCE:可以保证数据处理的准确性,但性能最差。
首先需要确认能否保证EXACTLY_ONCE(严格一次),因为端到端EXACTLY ONCE语义需要输入数据源的可回放(例如Kafka可回放数据),输出数据源的事务性(例如MySQL可原子性写入数据)。在无法满足这些条件的情况下,可以视情况将其降级为AT LEAST ONCE或者AT MOST ONCE。
- 在无法满足输入源的可回放时,只能保证AT MOST ONCE。
- 在无法满足输出目的的原子性写入时,只能保证AT LEAST ONCE。
【示例】API方式设置Exactly once语义:
env.getCheckpointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE)
【示例】资源文件方式设置Exactly once语义:
# checkpoint的语义 execution.checkpointing.mode: EXACTLY_ONCE
- MapReduce服务_如何使用MapReduce服务_MRS集群客户端安装与使用
- MapReduce服务_什么是Flink_如何使用Flink
- 什么是Spark_如何使用Spark_Spark的功能是什么
- MRS备份恢复_MapReduce备份_数据备份
- MapReduce服务_什么是ZooKeeper_如何使用ZooKeeper
- PLM系统功能介绍_国内PLM_主流PLM软件
- MapReduce服务_什么是Loader_如何使用Loader
- 华为云Astro低代码开发平台的技术价值与使用体验_低代码开发平台_华为云Astro-华为云
- MapReduce服务_什么是MapReduce服务_什么是HBase
- MapReduce服务_什么是存算分离_如何配置MRS集群存算分离