阿里云 Kafka × Iceberg 零 ETL 实时入湖:ApsaraMQ for Kafka × OSS Tables 架构减法¶
📊 Level ⭐⭐⭐⭐⭐ | 24.4KB
核心定位¶
阿里云官方对流数据入湖"零 ETL"趋势的系统阐述。核心命题:AI 时代数据架构趋势 = 数据链路更短 + 数据资产更开放 + 表能力与存储能力更靠近 + 平台能力尽量内聚。
实现:ApsaraMQ for Kafka × OSS Tables 已完成初步实践验证,对外开启邀测。
演进背景¶
传统离线数仓 → 实时数仓 → 流批并立 → 统一数据湖 + 开放表格式
AI 时代两类核心需求在同份数据上同时实现: - 实时需求(模型训练/特征工程/在线推理/经营分析/风控审计)→ 低延迟 + 持续处理 - 历史需求 → 低成本 + 可治理 + 多引擎复用
→ 数据必须在更短链路上完成接入、沉淀、复用
实时入湖 4 大趋势¶
- 开放格式优先(Iceberg 凭借开放元数据标准 + 多引擎兼容 + Schema 演进成为核心)
- 零 ETL 诉求(消息系统更直接将数据持久化为开放表格式)
- 存算分离深化(Kafka 存储层 + 数据湖存储层都向存算分离演进)
- Serverless 化(流处理与消息服务按需计费)
Kafka 入湖 3 大阵营¶
| 阵营 | 代表产品 | 核心思路 | 价值 | 限制 |
|---|---|---|---|---|
| 原生集成 | Confluent Tableflow、Redpanda Iceberg Topics | Broker 层直接将 Topic 物化为 Iceberg 表 | 架构简洁、零 ETL、延迟低 | Vendor lock-in 风险高 |
| Connector / ETL | AWS MSK Connect + Iceberg Sink、开源 Kafka Connect Iceberg Sink | 通过 Connector 消费并写入 Iceberg | 灵活可控、开源生态丰富 | 运维复杂、延迟高、exactly-once 难保证 |
| 生态平台 | Databricks、Snowflake | 平台集成能力摄入 Lakehouse | 与分析引擎深度集成 | 锁定特定格式(Delta Lake)/ 平台,开放度不足 |
架构理念:原生集成阵营更贴近"零 ETL",但要平衡开放性与中立性。
零 ETL 减掉了什么¶
传统链路:Kafka → Flink/Spark Streaming → 开放表 → 对象存储
减掉的三类系统复杂度: 1. 系统边界增加:数据从 Kafka 流出再由外部任务消费/转换/写入/提交,跨越独立运行时和独立调度 2. 通用能力重复实现:消息解码/Schema 映射/位点管理/事务提交/小文件控制/失败恢复,每条 ETL 都要实现 3. 平台成本持续上升:流计算集群、监控、发布、排障
"零 ETL"真正减掉: - 一层额外的数据搬运链路 - 一批重复实现的工程逻辑 - 一部分与业务价值无关的运维复杂度
Kafka × Table Bucket 3 层架构¶
| 层级 | 职责 |
|---|---|
| 协议接入层 | 兼容标准 Kafka Producer / Consumer 协议 |
| 转换处理层 | 格式转换、Schema 感知、CDC 解析、分区路由 |
| 表存储层 | 表写入、元数据管理、对象存储落盘、后台优化 |
关键创新:转换引擎与表写入内嵌到更靠近 Broker 的执行链路,减少网络往返、独立调度、ETL 集群复杂度。部分实现中数据从 Kafka 分区到 Iceberg 表的转换在同一进程内完成。
核心数据流:3 阶段端到端¶
阶段 1:记录转换(RecordProcessor)¶
- Key/Value 反序列化、Transform 链处理、记录组装
- 支持 String / Avro Registry / Protobuf
- 通过 Flatten / Debezium 转换链展开嵌套结构 / 解包 CDC 事件
阶段 2:Schema 感知与演进¶
- 比较当前 Schema vs 目标表 Schema
- 兼容性变更自动处理
- 写完再应用新 Schema
阶段 3:Iceberg 写入与事务提交¶
- Append 模式:PartitionedWriter / UnpartitionedWriter 直接追加
- Upsert 模式:生成 DataFile(数据)+ DeleteFile(删除标记),支持 Insert/Update/Delete
- 文件达到阈值(64MB)自动切换新文件
- 表级事务原子提交 → 新 Snapshot → 下游一致可见
关键能力¶
1. 兼顾低延迟与强一致¶
- 存算分离 × 轻量化 HA:计算与持久化解耦,Follower Replica 仅作计算热备
- 双路同步缓解"延迟-吞吐"权衡:
- 增量预同步(提交间隙持续完成读取/转换/写入)
- 强一致同步触发时只需提交少量增量
- 入湖进度内聚于 Leader 元数据:去除外挂 KV 等外部系统依赖
- 嵌入式 vs 独立式双模式:嵌入式低资源开销但 GC 压力;独立式进程隔离但资源成本高
2. Schema 自适应演进¶
| 演进类型 | 含义 | 处理策略 |
|---|---|---|
| ADD_FIELD | 新增可选字段 | 自动应用 |
| MAKE_OPTIONAL | 必填字段变为可选 | 自动应用 |
| PROMOTE_TYPE | 类型向上提升(int → long、float → double) | 自动应用 |
| 嵌套递归演进 | Struct 等嵌套结构中递归处理 | 自动应用 |
| 删除字段 / 复杂结构重组 | 不兼容变更 | 保守拒绝,避免一次上游变化中断整条链路 |
3. 多层小文件治理¶
| 层级 | 阶段 | 典型粒度 | 作用 |
|---|---|---|---|
| L1 | 内存 Buffer 合并 | 行级 | 在内存中聚合小批次,避免立即落盘 |
| L2 | 微批处理 | 32MB | 控制单次 flush 的批次规模 |
| L3 | 目标文件大小控制 | 64MB | 写入引擎层面控制文件大小阈值 |
| L4 | 后台 Compaction | 文件级 | 异步合并小文件,不占用计算侧资源 |
通常 L1~L3 入湖引擎侧完成,L4 后台离线 Compaction 承担。
4. 智能分区策略(7 类)¶
# 按地区 + 天双维分区
partition_by: "region, day(timestamp)"
# 高基数 ID 哈希分桶
partition_by: "bucket(user_id, 10)"
# 邮箱前缀归类
partition_by: "truncate(email, 5)"
支持:字段直接分区 / Year / Month / Day / Hour / Bucket / Truncate。
5. 完整 CDC / Upsert 支持¶
- 原生集成 Debezium 解包
- 借助 Iceberg Equality Delete 机制生成数据文件 + 删除标记
- 读取阶段自动合并为最新视图
6. 多 Catalog API 兼容¶
- Iceberg REST Catalog(开放生态主流标准)
- OSS Tables 兼容 Catalog(面向 S3 Tables 迁移场景)
- 下游引擎:Spark / Trino / Flink / DuckDB 都能围绕同一份数据
协议与格式的深度融合(3 大变化)¶
- 流批自动转换:数据写入即入湖,天然支持流读与批读,无需两套代码路径
- Schema 自适配:自动感知 ADD_FIELD / MAKE_OPTIONAL / PROMOTE_TYPE + 嵌套结构递归演进
- 进程内绑定调度:转换引擎与 Broker 进程内联 → 数据可见性收敛到分钟级(条件合适时逼近秒级)
传统 vs 零 ETL 对比¶
| 维度 | Kafka + Flink/Spark + Iceberg | Connector / ETL 方案 | Kafka × Table Bucket(零 ETL) |
|---|---|---|---|
| 架构复杂度 | 高(三段式 + 独立调度) | 中(Connector 集群) | 低(单链路内聚) |
| 开发成本 | 高(Streaming SQL/Code) | 中(Sink 配置) | 低(声明式配置) |
| Schema 演进 | 依赖人工或外部框架 | 部分支持 | 平台内建自动演进 |
| 小文件治理 | 业务自行处理 | 部分支持 | 多层递进式内建治理 |
| Exactly-Once | 需要业务保证 | 配置复杂 | 进度内聚 + 事务提交 |
| 运维成本 | 三重成本 | 双重成本 + 集群运维 | 接近二元成本结构 |
| 复杂流计算 | ✅ 强项 | ❌ 不适合 | ❌ 不适合 |
清醒判断:零 ETL ≠ 取代复杂流计算引擎。窗口聚合/多流 Join/维表关联/复杂事件处理/大规模状态管理 → 仍需 Flink/Spark Streaming。两者是分工而不是替代。
4 类优先受益场景¶
1. 实时日志分析¶
应用/访问/安全/系统日志 → Filebeat/FluentBit → Kafka → Trino/Spark 直接查询。写入持续、查询维度稳定、保留周期长。
2. 数据库变更实时入湖¶
MySQL Binlog / PostgreSQL WAL → Debezium → Kafka → Iceberg Upsert/Delete → 接近实时呈现当前业务状态。关键价值:保留主键/删除语义/可查询的当前视图。
3. IoT 多源数据汇聚¶
4 个共同特征:吞吐高 / 来源多 / 字段变化频繁 / 历史保留需求强。下游:Spark 大规模分析 + DuckDB 轻量查询。
4. AI 多模态训练数据 Pipeline¶
依托阿里云 OSS「对象 + 向量 + 表格」完整数据存储体系: - 路测原始数据 → OSS 对象桶 - Embedding + 召回索引 → OSS 向量桶 - Kafka 实时采集的车辆标注信息、传感器元数据 → OSS Table Bucket
三桶数据共享同一套账号、权限、审计体系,训练样本筛选与版本回溯可在单一平台完成,数据准备效率提升数倍。
阿里云实现:ApsaraMQ for Kafka × OSS Tables¶
已开启邀测。Kafka Table Topic 以 Iceberg 开放表格式持久化到 OSS Table Bucket,通过 Iceberg REST Catalog 与 Spark / Trino / Flink / DuckDB 开放生态对接。
已实现能力:多层小文件治理、Schema 自适应演进、CDC Upsert、多 Catalog 兼容。
下一阶段演进方向¶
- 更丰富的 Transform 与更智能的运维能力
- 与查询/计算/治理体系进一步打通
- 持续适配 Iceberg 等开放表格式演进,并兼容更多面向 AI 场景的新型格式
与 wiki 既有内容的关系¶
- 与 Databricks Storage Ecosystem 开放共享治理:都讲 Lakehouse + 开放表格式;Databricks 是"生态平台"阵营(Delta Lake 锁定),阿里云是"原生集成"阵营(中立兼容)——3 大阵营中的两极
- 与 750B MoE PD-Disaggregation AWS EFA(尚未入库):同属顶级云厂技术体系;本文是数据基础设施,750B MoE 是推理基础设施
- 与 Amazon Quick 加速企业数据到 AI 决策:都讲企业数据 → AI;Quick 是消费侧(无 SQL 业务查询),本文是生产侧(Kafka 实时入湖)
- 与 Harness Engineering:都讲"工程化收敛";Harness 是 AI 智能体工程,零 ETL 是数据基础设施工程;Harness 强调"通用能力内聚",零 ETL 强调"通用入湖能力内聚"——同一思想跨域应用
深度分析¶
"架构减法"作为方法论的深层含义:阿里云提出的"零 ETL"不仅是技术优化,更是一种架构哲学——通过减少数据链路中的中间层(ETL 管道、Schema Registry 独立部署、小文件合并脚本),将复杂度内聚到平台层。这与 Harness Engineering 的"通用能力内聚"思想高度一致,但应用场景从 AI 智能体工程转向数据基础设施。
3 大阵营的竞争本质是"谁控制元数据":Confluent Tableflow(原生集成)vs MSK Connect(托管连接器)vs Databricks/Snowflake(生态平台)的竞争,表面是产品形态之争,本质是元数据控制权之争。控制了 Schema Registry + Iceberg Catalog,就控制了数据消费的入口。阿里云选择"中立兼容"路线(同时支持 Iceberg REST Catalog 和 Glue/HMS),是在赌开放标准最终胜出。
Schema 自动演进是零 ETL 的技术护城河:4 种 Schema 演进模式(ADD COLUMN、类型拓宽、列重命名、嵌套结构变更)的自动处理,是区分"真正的零 ETL"和"把 ETL 隐藏到平台里"的关键。如果 Schema 变更仍需人工干预,那 ETL 只是换了个名字。
小文件治理的工程智慧:32MB/64MB 两阶段 compaction 策略(先 32MB 合并再 64MB 合并)体现了流式写入与批式查询的典型矛盾。这种"分层合并"模式在 LSM-Tree、Delta Lake 增量压缩中都有体现——是数据系统设计的通用模式,不是 Iceberg 特有问题。
AI 多模态训练场景是最大增量价值:4 类受益场景中,"AI 多模态训练数据实时入湖"是最具战略意义的——它将 Kafka 的流式数据能力直接对接到 AI 训练管线,省去了传统 ETL→对象存储→训练数据加载的 3 步延迟。这与 2026 年 AI 基础设施"数据-训练-推理一体化"的趋势完全吻合。
实践启示¶
-
评估零 ETL 方案时,重点考察 Schema 演进能力:不要被"零 ETL"营销话术迷惑——真正的测试是:当上游 Schema 变更时,下游查询是否自动兼容?要求厂商演示 ADD COLUMN + 类型拓宽 + 嵌套结构变更三种场景。
-
选择"中立兼容"路线降低锁定风险:同时支持 Iceberg REST Catalog + Glue/HMS 的方案(如阿里云 OSS Tables)比锁定单一 Catalog 的方案(如 Delta Lake-only)更具长期价值。开放表格式的竞争格局尚未尘埃落定。
-
小文件治理必须内置于平台层:如果零 ETL 方案不自带 compaction 策略,你最终会回到手动合并小文件的噩梦。要求方案提供 32MB+ 的自动合并能力,并确认合并是否影响写入延迟。
-
AI 训练管线是零 ETL 的最佳落地场景:如果你的团队在做多模态模型训练,实时入湖方案可以将数据延迟从小时级降到分钟级。优先评估 Kafka → Iceberg → 训练框架的端到端链路。
-
CDC Upsert 是 DB 变更捕获场景的必备能力:对于数据库变更同步到数据湖的场景,没有 Upsert 支持的零 ETL 方案是不完整的。确认方案支持 Debezium 格式的 CDC 事件,并能正确处理 DELETE + UPDATE 操作。
架构图¶
→ C4 架构图
相关实体¶
→ 原文存档
- Databricks Storage Ecosystem 开放共享治理
- 750B MoE PD-Disaggregation AWS EFA(尚未入库)
- Amazon Quick 加速企业数据到 AI 决策
- Harness Engineering
- ConardLi Harness Engineering 综合性指南(+ Beautiful Article 第 2 来源)
- 美团海报生成 AIGC PosterCraft/PosterOmni/PosterReward