一个典型的基于 Hudi 的湖仓一体架构图
本文介绍了一个基于Hudi的电商湖仓一体架构。该架构采用分层设计,包含数据源层(MySQL、MongoDB等)、采集层(Canal/Kafka等)、计算层(Flink/Spark)、统一数据湖(Hudi表)、元数据服务、查询引擎(SparkSQL/Presto)和应用层(BI/API)。架构通过Hudi实现ACID事务、增量消费、小文件合并等功能,支持订单更新、实时特征计算等电商场景。同时包含数据
以下是一个典型的电商基于 Hudi 的湖仓一体架构图,包含数据接入、存储、计算、查询等核心组件,并附有分层说明。
+-----------------------------------------------------+
| 数据源层 |
| MySQL Binlog, MongoDB, 应用日志, 第三方平台API |
+--------------------------+--------------------------+
|
v
+-----------------------------------------------------+
| 采集层 |
| Canal / Maxwell (Binlog采集) |
| Flume / Logtail (日志采集) |
| DataX / Sqoop (离线批量同步) |
| Kafka (消息队列, 统一数据管道) |
+--------------------------+--------------------------+
|
+---------------------------+---------------------------+
| |
v v
+-----------------------------------+ +-----------------------------------+
| 实时流处理 | | 离线批处理 |
| Flink (从Kafka消费) | | Spark / Hive (定期调度) |
| 写入Hudi (Merge-On-Read) | | 写入Hudi (Copy-On-Write) |
| 支持Upsert/Delete | | 支持批量追加/覆盖 |
+------------------+----------------+ +----------------+------------------+
| |
+------------------+-----------------------+
|
v
+------------------------------------------------------------------------------+
| 统一数据湖 (Hudi on HDFS/OSS) |
| +-------------------+ +-------------------+ +---------------------------+ |
| | ODS层 (原始数据) | | DWD层 (清洗明细) | | DWS层 (轻度汇总) | |
| | - 订单Binlog | | - 订单明细事实 | | - 每日订单汇总 | |
| | - 用户日志 | | - 用户行为日志 | | - 商品销售汇总 | |
| | - 库存快照 | | - 库存明细 | | - 会员活跃汇总 | |
| | Hudi表 | | Hudi表 | | Hudi表 / 也可导出 | |
| +-------------------+ +-------------------+ +---------------------------+ |
| |
| • 支持ACID事务, Upsert/Delete |
| • 增量消费, 流式读取 |
| • 小文件自动合并 (Compaction) |
+----------------------------------------+-------------------------------------+
|
v
+------------------------------------------------------------------------------+
| 统一元数据服务 (Hive Metastore / DLF) |
| 管理所有Hudi表的Schema、分区、文件位置 |
+----------------------------------------+-------------------------------------+
|
+--------------------+--------------------+
| |
v v
+-----------------------------------+ +-----------------------------------+
| 查询引擎 | | 实时加速层 (可选) |
| Spark SQL / Presto / Trino | | StarRocks / ClickHouse |
| 直接查询Hudi表 (批量/交互式) | | 通过Flink或Spark将Hudi数据同步 |
| 支持历史数据和增量查询 | | 到MPP引擎, 提供毫秒级查询 |
+------------------+----------------+ +----------------+------------------+
| |
+------------------+----------------------+
|
v
+------------------------------------------------------------------------------+
| 应用层 / 数据服务 |
| • BI报表 (QuickBI, Tableau) |
| • 数据API (标签查询, 人群圈选) |
| • 数据科学 (机器学习特征存储) |
| • 实时看板 (大屏监控) |
+------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
| 治理与运维 |
| • 调度系统 (DataWorks / DolphinScheduler) |
| • 数据质量监控 (完整性/准确性/波动告警) |
| • 数据血缘 (DataWorks 数据地图 / Atlas) |
| • 数据生命周期管理 (冷热分离, 归档) |
+------------------------------------------------------------------------------+
架构说明
-
数据源层:支持多种数据源,包括业务数据库(MySQL、MongoDB)、应用日志(埋点)、第三方平台(亚马逊、TikTok API)等。
-
采集层:
-
交易日志:Canal/Maxwell 采集 Binlog,写入 Kafka。
-
应用日志:Flume/Logtail 采集日志,写入 Kafka。
-
离线批量:DataX/Sqoop 定期拉取全量或增量数据到 HDFS 或直接入湖。
-
-
计算层:
-
实时写入:Flink 消费 Kafka 数据,使用 Hudi 的
Merge-On-Read表类型,支持 Upsert 和 Delete,实现分钟级数据入湖。 -
离线写入:Spark/Hive 定期处理批量数据,使用
Copy-On-Write表类型,适合稳定的大数据量写入。
-
-
数据湖存储:基于 HDFS 或 OSS,使用 Hudi 表格式存储 ODS、DWD、DWS 三层数据。Hudi 提供 ACID 事务、增量消费、自动小文件合并等能力,保障数据一致性和查询性能。
-
元数据服务:统一使用 Hive Metastore 或 DLF 管理所有 Hudi 表的元数据,使查询引擎能够发现表结构。
-
查询与分析:
-
直接查询:Spark SQL、Presto 可直接查询 Hudi 表,适合批量分析和历史数据追溯。
-
实时加速:将 DWS 层数据同步到 StarRocks/ClickHouse 等 MPP 引擎,支持高并发、毫秒级查询,用于实时看板和在线服务。
-
-
应用层:基于统一数据服务,支撑 BI 报表、数据 API、数据科学等业务场景。
-
治理与运维:
-
调度系统(DataWorks)统一管理 ETL 任务。
-
数据质量监控模块定期校验数据,发现问题自动告警。
-
数据血缘工具记录数据流向,辅助问题排查和影响分析。
-
生命周期管理自动将冷数据迁移到更低成本的存储。
-
Hudi 的核心优势在架构中的体现
-
Upsert/Delete:处理电商订单频繁更新、退款等场景。
-
增量消费:支持 Flink 读取增量数据,用于实时特征计算。
-
ACID 事务:保证并发写入时的数据一致性,避免脏读。
-
小文件管理:自动合并小文件,避免 NameNode 压力,提升查询性能。
更多推荐
所有评论(0)