返回
Flink CDC+ Hudi:提升顺丰海量订单数据入湖效率,助力数仓建设
后端
2023-12-26 00:34:00
引言
顺丰,以「快」著称的物流企业,行业闻名。随着业务量不断提升,数据量增长迅猛。单日订单数据已达 10 亿+,峰值时数据写入量高达 400 万条/秒,这些海量订单数据最终都要流向数据湖中,进行数据分析、挖掘和决策。这给数据湖的建设带来了极大的挑战。
挑战与痛点
顺丰数据湖建设面临的主要挑战和痛点如下:
- 数据量庞大,写入压力大: 单日订单数据量已达 10 亿+,峰值时数据写入量高达 400 万条/秒,对数据湖的写入性能提出了极高要求。
- 数据时效性要求高: 业务决策需要实时的数据,对数据湖的实时性提出了较高的要求。
- 数据质量要求严格: 数据湖中的数据必须是准确、完整和一致的,这给数据湖的数据质量管理带来了很大的挑战。
Flink CDC + Hudi 解决方案
为了应对上述挑战和痛点,顺丰采用了 Flink CDC + Hudi 的解决方案来构建数据湖。
Flink CDC
Flink CDC 是一个用于从数据库中捕获变更数据的工具。它可以实时地将数据库中的变更数据捕获下来,并发送到下游系统进行处理。Flink CDC 的优点在于:
- 实时性强: Flink CDC 可以实时地捕获数据库中的变更数据,从而确保数据湖中的数据是实时的。
- 可靠性高: Flink CDC 采用 Exactly-Once语义,可以确保数据不会丢失或重复。
- 扩展性好: Flink CDC 可以水平扩展,以满足不断增长的数据量需求。
Hudi
Hudi 是一个开源的湖仓一体解决方案。它可以将数据存储在 Hadoop 文件系统中,并提供与数据库类似的 ACID 事务支持。Hudi 的优点在于:
- 支持 ACID 事务: Hudi 可以提供与数据库类似的 ACID 事务支持,从而确保数据湖中的数据是准确、完整和一致的。
- 高性能: Hudi 采用列式存储格式,并支持向量化查询,因此查询性能非常高。
- 易于管理: Hudi 提供了丰富的工具和命令行工具,使数据湖的管理更加容易。
Flink CDC + Hudi 联合方案
顺丰将 Flink CDC 和 Hudi 结合起来,构建了一个高效、可靠、易于管理的数据湖解决方案。该解决方案的架构如下图所示:
该解决方案的实现步骤如下:
- 使用 Flink CDC 从数据库中捕获变更数据。
- 将捕获到的变更数据发送到 Kafka 消息队列中。
- 使用 Hudi 将 Kafka 消息队列中的变更数据写入到数据湖中。
该解决方案的优点在于:
- 实时性强: Flink CDC 可以实时地捕获数据库中的变更数据,Hudi 可以快速地将变更数据写入到数据湖中,从而确保数据湖中的数据是实时的。
- 可靠性高: Flink CDC 采用 Exactly-Once 语义,Hudi 提供 ACID 事务支持,从而确保数据不会丢失或重复。
- 扩展性好: Flink CDC 和 Hudi 都可以水平扩展,以满足不断增长的数据量需求。
- 易于管理: Flink CDC 和 Hudi 都提供了丰富的工具和命令行工具,使数据湖的管理更加容易。
应用效果
该解决方案在顺丰的应用效果非常显著。
- 数据写入性能提升: 数据写入性能从之前的 10 万条/秒提升到现在的 400 万条/秒,提升了 40 倍。
- 数据时效性提升: 数据时效性从之前的 T+1 提升到现在的实时,满足了业务决策对数据时效性的要求。
- 数据质量提升: 数据质量从之前的 99.9% 提升到现在的 99.99%,满足了数据分析和挖掘对数据质量的要求。
总结
顺丰采用 Flink CDC + Hudi 的解决方案来构建数据湖,取得了非常显著的成效。该解决方案不仅解决了顺丰数据湖建设面临的挑战和痛点,而且还提升了顺丰数据湖的整体性能和质量。