Apache Gravitino 简介
Source: Dev.to
作者: shaofeng shi
最后更新: 2025‑12‑29
概览
在大数据时代,企业常常需要管理来自多云、多域以及异构数据源(例如 Apache Hive、MySQL、PostgreSQL、Iceberg、Lance、S3、GCS 等)的元数据。随着 AI 模型训练和推理的快速普及,大规模的多模态数据和模型元数据也需要统一的管理方案。
传统方法对每个数据源的元数据单独管理,这会增加运维复杂度并导致数据孤岛。Apache Gravitino——一个高性能、地理分布式的联邦元数据湖——提供了统一的多源元数据管理解决方案。
项目历史
| 里程碑 | 日期 |
|---|---|
| 由 Datastrato Inc. 发起并创立 | – |
| 开源 | 2023 |
| 捐赠至 Apache 孵化器 | 2024 |
| 晋升为 Apache 顶级项目 | 2025 年 5 月 |
已在小米、腾讯、知乎、Uber 和 Pinterest 等公司投入生产使用。
什么是 Apache Gravitino?
一个高性能、地理分布式、联邦的元数据湖管理系统,提供统一的数据与 AI 资产管理平台。它可以:
- 统一元数据管理 – 为多种数据源提供统一的模型和 API。
- 直接元数据管理 – 更改实时反映到底层系统。
- 多引擎支持 – 可与 Trino、Spark、Flink 等协同工作。
- 地理分布式部署 – 支持跨区域、跨云的架构。
- AI 资产管理 – 同时管理数据资产和 AI/ML 模型元数据。
核心概念
| 概念 | 描述 |
|---|---|
| Metalake | 元数据的容器/租户;通常是“一组织 ↔ 一个 metalake”。 |
| Catalog | 来自特定来源的元数据集合。 |
| Schema | 二级命名空间(相当于数据库模式)。 |
| Table | 最底层对象,代表具体的数据表。 |
支持的数据源
| 类别 | 类型 |
|---|---|
| 关系型数据库 | MySQL, PostgreSQL, OceanBase, Apache Doris, StarRocks, … |
| 大数据存储 | Apache Hive, Apache Iceberg, Apache Hudi, Apache Paimon, Delta Lake (in development) |
| 消息队列 | Apache Kafka |
| 文件系统 | HDFS, S3, GCS, Azure Blob Storage, Alibaba Cloud OSS |
| AI/ML 数据格式 | Lance (columnar format optimized for AI/ML workloads) |
REST API 服务
Gravitino Core REST API
- 对所有元数据对象(Metalake、Catalog、Schema、Table 等)提供完整的 CRUD
- 用户、组、角色和权限管理
- 高级功能:标签、策略、模型等
- 认证方式:Simple、OAuth2、Kerberos
Iceberg REST Service
- 实现 Apache Iceberg REST API 规范
- 支持 Hive、JDBC 以及自定义后端作为存储
- 跨 S3、HDFS、GCS、Azure 等的表管理与查询能力
Lance REST Service
- 实现 Lance REST API 规范
- 为 AI/ML 工作负载(向量数据存储与检索)进行优化
- 命名空间和表管理
Direct Metadata Management
- 实时同步 – 将元数据更改立即传播到底层源。
- 双向同步 – 同时实现从 Gravitino → 源以及源 → Gravitino 的同步。
- 事务支持 – 确保元数据操作的原子性和一致性。
- 版本管理 – 元数据版本控制与历史追踪。
统一权限管理
| 功能 | 描述 |
|---|---|
| RBAC | 灵活的用户、组和角色的权限处理。 |
| Ownership Model | 每个元数据对象都有明确的所有者。 |
| Permission Inheritance | 从 Metalake 到表的层级继承。 |
| Fine‑grained Control | 多层级权限(Metalake → Catalog → Schema → Table)。 |
支持的权限类型
- 用户和组管理
- 目录和模式创建
- 对表、主题、文件集的读/写
- 模型注册与版本控制
- 标签和策略应用
Data Lineage (OpenLineage)
- 自动血缘收集 – 通过 Spark 插件。
- 统一标识符 – 将跨源的标识符标准化为 Gravitino ID。
- 多源支持 – Hive、Iceberg、JDBC、文件系统等。
部署模式
- 单节点 – 开发与测试。
- 集群 – 高可用性与负载均衡。
- Kubernetes – 容器化部署并自动扩缩。
- Docker – 提供官方 Docker 镜像。
存储后端
- 关系型数据库:MySQL、PostgreSQL、…
- 分布式存储系统(可插件化)。
认证方式
- 简单(用户名/密码)
- OAuth2
- Kerberos(用于 Hive 后端)
凭证管理
- 云存储凭证供应(S3、GCS、Azure、…)
- 动态凭证刷新
- 安全凭证传递机制
与计算引擎的集成
Gravitino 深度集成主流计算引擎和数据处理框架,提供统一的数据访问体验。
- Apache Spark – 无缝的元数据同步和血缘追踪。
- (其他引擎如 Trino、Flink 等也受支持。)
Source: …
Apache Gravitino 的集成能力
Gravitino 提供了一套丰富的连接器和 SDK,帮助您以最小的工作量接入现有的数据基础设施。以下章节概述了每个集成点及其关键特性。
🌟 Gravitino Spark Connector
支持 Spark SQL 和 DataFrame API
- 自动收集和追踪数据血缘
- 对多种数据源的统一访问
🔎 Trino Connector
通过 Gravitino Trino Connector 服务进行集成
- 跨异构数据源的联合查询
- 高性能的分析查询能力
⚡ Apache Flink Connector
通过 Gravitino Flink Connector 服务进行集成
- 流批统一的数据处理
- 实时数据处理与分析
🐍 PyIceberg
面向 Python 环境的 Iceberg 表访问
- 连接 Gravitino Iceberg REST 服务
- 支持数据科学和机器学习工作流
- 提供兼容 Pandas 的数据接口
🚀 Daft
现代分布式数据处理框架
- 为 AI/ML 工作负载进行优化
- 支持多模态数据处理
- 与 Gravitino 元数据管理深度集成
☸️ Kubernetes
在 Kubernetes 集群上的原生部署
- Helm Chart 与 Operator,轻松安装
- 自动扩缩容和故障恢复能力
- 与云原生监控、日志系统集成
🌐 REST API
完整的元数据管理 RESTful 接口
- 支持对目录、模式、表等的全部 CRUD 操作
- 标准化的 HTTP 端点
- 多种认证方式(如 token、OAuth)
☕ Java SDK
原生 Java 客户端库
- 类型安全的 API
- 内置连接池和重试机制
- 完备的异常处理
🐍 Python SDK
Python 客户端库
- 支持异步操作
- 与 Jupyter Notebook 无缝集成
- 为数据科学工作流量身定制
为什么这些集成很重要
这些能力使 Gravitino 能够 无缝集成 到现有的数据生态系统,为用户提供 统一且高效 的数据管理体验。后续文章将深入探讨每个组件的配置和使用模式——敬请期待!
👉 继续阅读: Setup Guide
⭐️ 关注并为项目加星: Apache Gravitino Repository
注意: 本文档基于 Apache Gravitino v1.1.0 的特性。欲获取最新信息,请查阅官方文档或在 GitHub 上提交 Issue。