今天我们要介绍的是元数据管理方向的一个Apache开源项目:Apache Gravitino。
Apache Gravitino 是一个开源的元数据服务平台,旨在简化来自不同来源、类型和地区的元数据管理。它具备高性能、地理分布和联合特性,为用户提供统一接口,以访问和管理数据及人工智能资产的元数据。
通过Gravitino,用户能够更高效地管理和利用元数据,提升数据和AI资产的可访问性。
Apache Gravitino 定位
随着数据湖大规模应用、AI 数据大量增长、数据安全与数据治理被更加被重视,难以基于原有的架构或组件实现一套统一的元数据管理系统,进而解决数据孤岛、统一权限,多维度数据治理等问题。
Gravitino 通过引入统一的接口和标准化的元数据模型,打破了这种壁垒,使得用户可以在一个平台上集中管理和访问各类元数据。
Apache Gravitino 的定位为「Metadata Lake」,由 Datastrato 发起并于2023年开源。
Apache Gravitino核心能力
根据官网介绍,Gravitino 提供以下核心能力:
统一元数据管理
Gravitino 为不同类型的元数据源提取统一的元数据模型和 API。例如,针对表格数据的关系型元数据模型,如 Hive、MySQL、PostgreSQL 等,也包括 Apache Doris。也针对所有非结构化数据的文件元数据模型,如 HDFS、S3 和其他格式。
端到端数据治理
Gravitino 的目标是提供一个统一的元数据治理层,以统一的方式管理端到端的元数据,其中包括访问控制、审计、发现等功能。端到端数据治理意味着对数据从产生到使用的整个过程进行全面的管理和控制,确保数据的准确性、完整性、安全性和可用性。例如,通过访问控制功能,可以限制不同用户对数据的访问权限;审计功能可以记录数据的使用情况和变化历史;发现功能可以帮助用户快速找到所需的数据。
直接元数据管理
与传统元数据管理系统需要从底层系统主动或被动地收集元数据不同,Gravitino 直接管理这些系统。它提供了一组连接器来连接不同的元数据源。Gravitino 中的变化会直接反映在底层系统中,反之亦然。这意味着 Gravitino 能够更直接地与元数据源进行交互,实现更高效的元数据管理。
多引擎支持
Gravitino 支持不同的查询引擎来访问元数据。目前,它已经支持了 Trino,Apache Spark 和 Apache Flink,用户可以使用这些引擎来查询元数据和数据,而无需更改现有的 SQL 方言。
Gravitino 也在进行与 AI 资产管理相关的工作。如将普通数据以及 AI 资产(如模型、特征等)的管理进行统一,实现一种统一的数据管理方式。
Apache Gravitino的核心架构
Gravitino 内部采用 MetaLake(元数据湖的缩写)的概念组织元信息。一个MetaLake 包含多种 Catalog ,每个 Catalog 对应特定类型的数据源(如 Hive、Iceberg、Hudi、MySQL、Postgres、Doris 等)。
在 Catalog 之下,用户可以创建多个 Schema(在传统数据库中称为 DATABASE),这是一个逻辑概念,用于组织底层的数据实体。在叶子节点上,可以是 Table、Fileset、Model、Topic,这些节点承载了进一步的元信息,如 Table 的列信息、分区信息,Fileset 的存储位置信息,Model 的版本信息和存储位置,Topic 的 Kafka 集群信息和 Schema 等等,用户还可以进一步扩展,以记录各种元信息。
所有元信息都存储在一个元数据存储中,可以是 MySQL、PG 数据库,也可以是内存式或 KV 存储。在 Gravitino 之上提供统一的 Restful API,供客户端对元数据进行操作和访问。
此外,考虑到 Apache Iceberg 是一个流行的数据湖表格式技术,Gravitino 兼容实现了 Iceberg 的 REST catalog open API,客户端可以使用 Iceberg 标准协议来操作和管理 Gravitino 内注册的 Iceberg 表。
功能层:Gravitino为用户提供了一个API来管理元数据,包括标准的元数据创建、更新和删除操作。同时,它还提供了以统一方式管理元数据的能力,包括访问控制、发现等。
接口层:Gravitino提供了一个标准的REST API作为用户的接口层。未来的支持包括Thrift和JDBC接口。
核心对象模型:Gravitino定义了一个通用的元数据模型,用于表示不同来源和类型的元数据,并以统一的方式对其进行管理。
连接层:在连接层,Gravitino提供了一组连接器来连接不同的元数据源,包括Apache Hive、MySQL、PostgreSQL等。它还允许连接和管理除表格数据之外的异构元数据。
生产实践
目前Apache Gravitino已在众多公司有落地实践。我们参考小米和Bilibili的分享:
目前Apache Gravitino已在众多公司有落地实践,包括小米、腾讯、哔哩哔哩、Flywheel、网易游戏、唯品会、贝壳找房等。
我们参考B站的生产实践
B站拥有庞大的数据体量,并使用多种计算引擎。过去,这些引擎直接访问底层系统的元信息,导致复杂且高耦合的数据访问链路,同时缺乏有效的数据治理手段。具体问题包括:
- 业务侧耦合度高:元数据使用方调用异构数据源方式复杂多样。
- 数据治理能力有限:无法提供统一的审计、权限管理、TTL 能力等。
- 半结构化/非结构化数据源缺乏管理
- 跨源数据 Schema 维护成本高
解决方案
- 开发 OneMeta 平台:基于 Gravitino 开发 OneMeta 平台,统一管理元数据。
- 简化数据访问:上层引擎通过 OneMeta 访问数据,简化了数据访问链路。
- 数据治理:通过标签和 TTL 等机制,对数据进行分类和治理。
效果
- 简化了上下层对接链路,增强了数据治理能力。
- 显著减少了存储成本,例如通过标签和 TTL 策略减少了约 100 PB 的 HDFS EC 存储成本和 300 PB 的 HDFS TTL 存储成本。
- 提高了数据访问效率,降低了系统维护成本。