Apache Gravitino 技术调研报告
统一联邦元数据湖 — Catalog of Catalogs
1. 概述
Apache Gravitino 是一个高性能、支持地理分布的联邦元数据湖(Federated Metadata Lake)开源项目。其核心定位为 "Catalog of Catalogs" — 不替换企业现有的 Catalog 系统,而是在所有 Catalog 之上提供一个统一的元数据治理层。
Gravitino 最初由 Datastrato 公司发起,2024年进入 Apache 孵化器,2025年6月3日正式毕业成为 Apache 顶级项目(TLP),2025年9月发布首个稳定大版本 1.0.0。截至2026年6月,最新版本为 1.3.0。
2. 核心能力
2.1 统一元数据模型
Gravitino 抽象出一套通用的元数据对象层级,覆盖关系型数据、文件、消息队列、AI 模型等:
2.2 直接管理(非采集)
不像 DataHub/Atlas 那样被动收集元数据,Gravitino 直接连接底层系统 — 在 Gravitino 里做的修改立即反映到底层,反之亦然。
2.3 多引擎支持
Trino、Spark、Flink、DuckDB、Doris 等引擎可通过 Gravitino Connector 或标准 Iceberg REST 协议统一访问所有数据源。
2.4 联邦 IRC(Federated Iceberg REST Catalog)
1.3.0 核心亮点:一个 Gravitino IRC 可联邦其他 Iceberg REST Catalog,不复制 metadata,bearer-token 转发给数据所有者,由所有者做授权和审计。
2.5 多云单一 Catalog
1.3.0 支持一个 IRC endpoint 同时服务 S3 + GCS + ADLS,按 URI scheme 自动路由,每次请求下发 path-scoped 临时凭证(Credential Vending)。
2.6 AI 资产管理
| 能力 | 说明 | 版本 |
|---|---|---|
| Model Catalog | ML 模型注册、版本管理 | 0.8+ |
| Lance REST Service | 向量数据集的 REST 访问 | 1.1+ |
| MCP Server | 让 LLM Agent 通过 MCP 协议发现/操作数据 | 1.0+ |
3. 架构设计
4. 统一权限控制(重点)
4.1 双重访问控制模型
| 模型 | 原理 | 适用场景 |
|---|---|---|
| RBAC | Privilege → Role → User/Group | 数据使用者的细粒度操作权限 |
| DAC (Ownership) | 创建者自动成为 Owner,Owner 拥有管理权 | 元数据对象的管理权(ALTER/DROP) |
4.2 权限类型覆盖
| 资源类型 | 关键 Privilege |
|---|---|
| Table | CREATE_TABLE, SELECT_TABLE, MODIFY_TABLE |
| View | CREATE_VIEW, SELECT_VIEW |
| Topic (Kafka) | CREATE_TOPIC, PRODUCE_TOPIC, CONSUME_TOPIC |
| Fileset (S3/HDFS) | CREATE_FILESET, READ_FILESET, WRITE_FILESET |
| Model (AI) | REGISTER_MODEL, LINK_MODEL_VERSION, USE_MODEL |
4.3 权限继承与 DENY 优先
权限沿对象层级自顶向下继承(Metalake → Catalog → Schema → Table)。DENY 永远优先于 ALLOW,无论出现在哪一层。
4.4 Authorization Pushdown
Gravitino 可将策略翻译并同步到底层系统(Apache Ranger / 数据源原生 ACL),保证即使绕过 Gravitino 直接访问底层,权限依然生效。
4.5 与 Apache Ranger 的分工
| 维度 | Gravitino | Apache Ranger |
|---|---|---|
| 控制层面 | 元数据面 — 拦截 metadata 请求 | 数据面 — 拦截 SQL 执行 |
| 最细粒度 | 表级 | 行级 / 列级(含脱敏) |
| 拦截位置 | Catalog 层 | 引擎内部 Plugin |
| 跨数据源 | ✅ 天然统一 | ⚠️ 需每个数据源配 Plugin |
forwardUser=true 可实现 per-user 鉴权。
5. 引擎集成方式
两条接入路径
| 特性 | Gravitino Engine Connector | Iceberg REST Catalog (IRC) |
|---|---|---|
| 需要额外 JAR | 是 | 否 |
| 支持引擎 | Trino, Spark, Flink, Daft | 任何 Iceberg 兼容引擎 |
| Per-user 鉴权 | ✅ forwardUser=true | ❌ 计划中 |
| Credential Vending | 部分 | ✅ 完整 |
| 非 Iceberg 表 | ✅ Hive/MySQL 等 | ❌ 仅 Iceberg |
HUE → Trino → Gravitino 路径
通过 gravitino.client.session.forwardUser=true,Trino 将每个 session user 的身份传递给 Gravitino,实现 per-user 权限裁决。
6. 典型场景
湖仓多 Catalog 统一
Hive + Iceberg + Glue 共存于迁移过渡期,通过 Gravitino 统一入口查询
跨云数据联邦
AWS + GCP + Azure 数据在一个 Catalog 视图中,Credential Vending 按云路由
并购整合
联邦被收购公司的 Catalog,不强制合并,所有权和审计留在对方
Data Mesh
各 BU 自治数据产品,Gravitino 提供统一发现和联邦治理
替代 HMS
突破 Hive Metastore 只能管 Hive/Iceberg 表的限制,成为新一代 Catalog
AI/ML 平台
统一管理 Table + Model + Lance 向量数据集,Data + AI 一体治理
AI Agent 数据助手
MCP Server 让 LLM Agent 有权限地发现和操作企业数据
中心化权限
一处 RBAC + Credential Vending + 审计,覆盖所有数据源
7. 竞品对比
| 维度 | Gravitino | Unity Catalog (OSS) | Apache Polaris | AWS Glue Catalog | SageMaker Catalog |
|---|---|---|---|---|---|
| 定位 | 联邦 Catalog 引擎 | 中心化 Catalog | Iceberg REST Catalog | 托管 Catalog | 数据资产发现平台 |
| 开源 | Apache 2.0 | Apache 2.0 | Apache 2.0 | 闭源 | 闭源 |
| 多 Catalog 联邦 | ✅ 核心特性 | ❌ | ❌ | ❌ | ❌ |
| 多云 | S3+GCS+ADLS | 有限 | ✅ | AWS Only | AWS Only |
| 资产类型 | Table+File+Topic+Model+Func | Table+Volume+Model+Func | 仅 Iceberg Table | Table+File (有限) | 所有 AWS 数据资产 |
| 引擎中立 | Trino/Spark/Flink/DuckDB | Spark 为主 | 引擎中立 | Athena/Redshift/EMR | 不接入引擎 |
| AI 集成 | MCP+Lance+Model | Model Registry | ❌ | ❌ | 发现/编目 |
| 权限方式 | 自带 RBAC + Pushdown | 自带 ACL | 自带 RBAC | Lake Formation/IAM | 不做权限控制 |
| 面向对象 | 引擎 (机器) | 引擎 (机器) | 引擎 (机器) | 引擎 (机器) | 人 (发现/治理) |
8. 已知采用者与社区
生产案例
| 公司 | 场景 | 来源 |
|---|---|---|
| 规模化 Iceberg 迁移,Hive/Iceberg 表通过 Gravitino 统一查询 | 公开演讲 (2025) | |
| 字节跳动 / BytePlus | LAS 服务直接集成 Gravitino 作为元数据治理层 | BytePlus 官方文档 |
| NexusOne | 多租户联邦 Iceberg 平台,扩展 Keycloak + Ranger 集成 | 技术博客 (2026.03) |
社区贡献者(代码参与)
9. 与 AWS 生态的关系
| 集成路径 | 说明 |
|---|---|
| Gravitino + EMR | Spark Connector Plugin / IRC 方式接入 EMR Spark/Trino |
| Gravitino + Glue Catalog | 原生 Glue provider,注册为 Catalog backend,EMR 上免额外 JAR |
| Gravitino + S3 Tables | 通过 REST backend 代理 S3 Tables Iceberg REST endpoint |
| Gravitino + Lake Formation | 互补:Gravitino 管 metadata 访问控制,LF 管 S3 存储层权限 |
| Credential Vending | 与 AWS STS AssumeRole 模型天然对齐 |
Gravitino vs SageMaker Catalog
发现/编目/标注
查询/权限/联邦
不是同一个场景的产物。SageMaker Catalog 面向人(数据发现/治理),Gravitino 面向引擎(统一访问/权限控制)。一个解决"找到数据",另一个解决"访问数据"。两者可互补。
10. 发展趋势与未来规划
| 方向 | 内容 | 预期时间 |
|---|---|---|
| Universal Lakehouse | Iceberg + Delta Lake + Hudi + Paimon 多格式统一管理 | 进行中 |
| ABAC | 基于属性的访问控制(Sensitivity=High 等动态标签),替代静态 RBAC | 规划中 |
| KMS 集成 | 密钥管理服务集成,数据加密治理 | 规划中 |
| IRC per-user identity | 从引擎透传 per-user 身份到 IRC,实现端到端 per-user 鉴权 | 关键待解决 |
| Data Agent 编排 | MCP + Action System,AI Agent 自主发现并操作数据 | 探索中 |
| 多模态数据栈 | Daft、Ray、Lance 深度集成,支持非表格数据 | 进行中 |