顺丰数据集成实践:Flink CDC与Hudi在海量数据入湖的应用

4星 · 超过85%的资源 需积分: 3 7 下载量 130 浏览量 更新于2024-06-26 收藏 7MB PDF 举报
"顺丰在大数据集成过程中采用了Flink CDC与Hudi相结合的技术方案,用于海量数据入湖。本文档详细介绍了顺丰数据集成的背景、Flink CDC的实践问题与优化,以及未来的规划。" 顺丰数据集成背景: 顺丰作为一家大型物流公司,其业务涉及速运、IoT万物互联和智慧物流等领域。在数据集成的历史发展中,经历了从Jstorm+canal到Flink+canal,再到Flink CDC的演变。早期的数据入湖架构存在一些挑战,如全量与增量数据可能存在重复,需要下游处理Upsert或Merge操作,且由于组件多、链路长,导致资源消耗大、维护复杂。为了满足业务需求,顺丰提出了以下核心需求: 1. 无锁读取,支持断点续传和水平扩展。 2. 全量与增量数据自动切换,确保数据准确性。 3. 在不中断日志采集的情况下,进行全量与增量采集,避免新增表对其他表的影响。 4. 能在现有任务中添加新表,防止单个表任务消耗过多数据库带宽。 5. 保证数据在同一主键下按照历史顺序传输,避免事件错序。 为什么选择Flink CDC: Flink CDC因其无缝对接Flink生态,能够满足顺丰提出的上述核心需求,成为了顺丰数据集成的理想选择。Flink CDC 2.0采用FLIP-27架构,通过全量同步和增量日志数据采集两部分实现数据的持续捕获。但在实践中,顺丰发现新增表会导致 Binlog 日志流停止,这与核心需求4相冲突,造成新增表对其他表的日志采集延迟。 Flink CDC实践问题与优化: 为解决新增表停止Binlog日志流的问题,顺丰提出了一种全量与增量日志流并行读取的优化策略。在程序启动时,先执行增量同步,创建BinlogSplit,分配给SourceRead执行增量数据采集,随后进行全量数据采集的split块切分和分配。这样,新增表的处理不会中断现有的日志流,有效降低了新增表对其他表日志采集的延迟。 未来规划: 顺丰在Flink CDC的基础上,可能会继续探索如何更高效地利用Hudi进行数据湖存储和管理,优化数据入湖的效率和稳定性,同时减少对源数据库的影响。此外,顺丰可能还会关注如何进一步提升数据处理的实时性,优化资源利用率,以及增强系统的可扩展性和容错能力。 总结: 顺丰在大数据集成领域采用了Flink CDC与Hudi的组合,以应对海量数据的挑战。通过不断优化Flink CDC的实践,解决了新增表对数据采集的影响,提升了整体数据处理的效率和准确性。随着技术的发展,顺丰将继续致力于提高数据湖的性能和功能,以支持其日益复杂的业务需求。