跳转至

阿里云 Kafka × Iceberg 零 ETL 实时入湖:ApsaraMQ for Kafka × OSS Tables 架构减法

📊 Level ⭐⭐⭐⭐⭐ | 24.4KB

核心定位

阿里云官方对流数据入湖"零 ETL"趋势的系统阐述。核心命题:AI 时代数据架构趋势 = 数据链路更短 + 数据资产更开放 + 表能力与存储能力更靠近 + 平台能力尽量内聚。

实现:ApsaraMQ for Kafka × OSS Tables 已完成初步实践验证,对外开启邀测。

演进背景

传统离线数仓 → 实时数仓 → 流批并立 → 统一数据湖 + 开放表格式

AI 时代两类核心需求在同份数据上同时实现: - 实时需求(模型训练/特征工程/在线推理/经营分析/风控审计)→ 低延迟 + 持续处理 - 历史需求 → 低成本 + 可治理 + 多引擎复用

→ 数据必须在更短链路上完成接入、沉淀、复用

实时入湖 4 大趋势

  1. 开放格式优先(Iceberg 凭借开放元数据标准 + 多引擎兼容 + Schema 演进成为核心)
  2. 零 ETL 诉求(消息系统更直接将数据持久化为开放表格式)
  3. 存算分离深化(Kafka 存储层 + 数据湖存储层都向存算分离演进)
  4. 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 支持

# CDC 入湖典型配置
transforms: debezium_unwrap
write_mode: upsert
table_format: iceberg-v2
  • 原生集成 Debezium 解包
  • 借助 Iceberg Equality Delete 机制生成数据文件 + 删除标记
  • 读取阶段自动合并为最新视图

6. 多 Catalog API 兼容

  • Iceberg REST Catalog(开放生态主流标准)
  • OSS Tables 兼容 Catalog(面向 S3 Tables 迁移场景)
  • 下游引擎:Spark / Trino / Flink / DuckDB 都能围绕同一份数据

协议与格式的深度融合(3 大变化)

  1. 流批自动转换:数据写入即入湖,天然支持流读与批读,无需两套代码路径
  2. Schema 自适配:自动感知 ADD_FIELD / MAKE_OPTIONAL / PROMOTE_TYPE + 嵌套结构递归演进
  3. 进程内绑定调度:转换引擎与 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. 实时日志分析

partition_by: "day(timestamp), service_name"
write_mode: append
target_file_size: 64MB

应用/访问/安全/系统日志 → Filebeat/FluentBit → Kafka → Trino/Spark 直接查询。写入持续、查询维度稳定、保留周期长。

2. 数据库变更实时入湖

transforms: debezium_unwrap
write_mode: upsert
table_format: iceberg-v2

MySQL Binlog / PostgreSQL WAL → Debezium → Kafka → Iceberg Upsert/Delete → 接近实时呈现当前业务状态。关键价值:保留主键/删除语义/可查询的当前视图。

3. IoT 多源数据汇聚

partition_by: "bucket(device_id, 50), day(timestamp)"

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 兼容。

下一阶段演进方向

  1. 更丰富的 Transform 与更智能的运维能力
  2. 与查询/计算/治理体系进一步打通
  3. 持续适配 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 基础设施"数据-训练-推理一体化"的趋势完全吻合。

实践启示

  1. 评估零 ETL 方案时,重点考察 Schema 演进能力:不要被"零 ETL"营销话术迷惑——真正的测试是:当上游 Schema 变更时,下游查询是否自动兼容?要求厂商演示 ADD COLUMN + 类型拓宽 + 嵌套结构变更三种场景。

  2. 选择"中立兼容"路线降低锁定风险:同时支持 Iceberg REST Catalog + Glue/HMS 的方案(如阿里云 OSS Tables)比锁定单一 Catalog 的方案(如 Delta Lake-only)更具长期价值。开放表格式的竞争格局尚未尘埃落定。

  3. 小文件治理必须内置于平台层:如果零 ETL 方案不自带 compaction 策略,你最终会回到手动合并小文件的噩梦。要求方案提供 32MB+ 的自动合并能力,并确认合并是否影响写入延迟。

  4. AI 训练管线是零 ETL 的最佳落地场景:如果你的团队在做多模态模型训练,实时入湖方案可以将数据延迟从小时级降到分钟级。优先评估 Kafka → Iceberg → 训练框架的端到端链路。

  5. CDC Upsert 是 DB 变更捕获场景的必备能力:对于数据库变更同步到数据湖的场景,没有 Upsert 支持的零 ETL 方案是不完整的。确认方案支持 Debezium 格式的 CDC 事件,并能正确处理 DELETE + UPDATE 操作。

架构图

→ C4 架构图

相关实体

→ 原文存档