摘要:导读随着人工智能(AI)与多云架构时代的到来,企业和组织面临着前所未有的数据管理的挑战。为了应对这些挑战,Gravitino 项目应运而生,旨在提供一个强大的开源大数据组件,以支持现代环境中高效的数据资产管理。本文将详细介绍 Gravitino 项目的背景、目
导读随着人工智能(AI)与多云架构时代的到来,企业和组织面临着前所未有的数据管理的挑战。为了应对这些挑战,Gravitino 项目应运而生,旨在提供一个强大的开源大数据组件,以支持现代环境中高效的数据资产管理。本文将详细介绍 Gravitino 项目的背景、目标及其核心架构设计,并通过具体的应用场景和用户案例来展示其实际价值。
主要内容包括以下几个部分:
1. AI 和多云时代数据管理的挑战
2. Apache Gravitino 整体架构设计
3. Apache Gravitino 支持的典型场景
4. 方案及成功案例
5. 问答环节
分享嘉宾|史少锋 Datastrato,北京平流智能 VP of engineering
编辑整理|Kathy
内容校对|李瑶
出品社区|DataFun
01
AI 和多云时代数据管理的挑战
随着 ChatGPT 等生成式 AI 技术的兴起,人工智能(AI)的发展进入了一个新的阶段。AI 模型的训练需要大量的数据,包括文本、图像、音视频等多种类型。这使得企业对数据的需求呈指数级增长,尤其是非结构化数据的管理和治理成为新的挑战。
1. AI 对数据需求呈指数级增加
在过去,数据团队主要服务于商业智能(BI)需求,处理结构化数据的 ETL(Extract, Transform, Load)加工和计算。然而,随着 AI 技术的发展,非结构化数据的处理需求显著增加。非结构化数据具有结构多样性、数据量大和复杂性高等特点,其处理和管理的难度远高于结构化数据。
同时,为了满足合规性、数据安全和隐私保护的要求,非结构化数据和结构化数据一样,都需要得到有效的治理,这已成为企业的刚需。
2. 高质量的合规数据是 AI 大模型成功的关键
大家知道,训练高质量的大语言模型需要大量高质量的数据作为前提。如果缺乏准确、高质量的数据,训练出来的模型可能会存在缺陷,导致资源和算力的浪费,甚至产生法律纠纷等问题。因此,数据质量、实时性、安全管控、利用率和资源占用等方面都需要一套完整的数据管理手段。
3. 多云导致数据孤岛问题进一步凸显
云计算技术经过多年发展已趋于成熟,企业往往采用多种形态的云计算服务,包括公有云、私有云和混合云等来满足不同场景的需求。在 AI 需求快速兴起的背景下,企业为了寻找最充足的算力资源以及追求最优的价格模型,往往会跨云进行模型训练或推理,在此情况下数据的拷贝迁移不可避免,同时还要遵守各个国家和地区不同的数据保护法规。此时,打通数据孤岛的问题变得更加复杂和具有挑战性。
4. 元数据管理的重要性
然而我们能看到、接触到的数据,往往只是所有数据的一小部分;在可见的数据之下,隐藏着诸多重要的元信息,例如数据来源、版权、主权、分类分级、保留期限等方面。这些元信息对于有效的数据管理和治理至关重要。如果缺失了这些关键元信息,数据变得难以发现、管理和使用,甚至会引发用户的担忧或监管机构的质疑。
02
Apache Gravitino 整体架构设计
1. Apache Gravitino 项目的发起
鉴于市场上缺乏具有综合管理能力的元数据系统,Gravitino 项目于一年多前启动,并得到了一批早期用户的响应和积极支持。2024 年上半年,Gravitino 项目进入了 Apache 软件基金会(ASF)孵化器,以促进其与整个开源生态系统的更好结合。Apache 软件基金会是全球最大的开源软件组织之一,许多重要的数据领域开源项目均出自于此。
2. Gravitino 的逻辑架构
Gravitino 是一个统一的数据目录系统,支持多种数据形态,包括传统的数据库(RDBMS)、数据仓库(DW)、数据湖(Data lake)以及新兴的数据系统如消息队列、非结构化数据存储(如 S3、HDFS 等)。这些数据都可以接入到 Gravitino 中进行管理。
对于机器学习模型或 AI 模型,Gravitino 同样支持它们的元信息管理,并提供了一个专门的 Model Catalog 来处理这类数据。此外,Gravitino 还对接了多个主流计算引擎(如 Trino、Spark、Flink),使得这些引擎可以直接操作注册在 Gravitino 中的元信息。
为了简化不同类型存储的访问,Gravitino 提供了统一的数据访问接口。例如,在Python 生态中,用户可以通过标准文件系统接口(fsspec)访问注册在 Gravitino中的 Fileset ;而在 Spark、Flink 生态中,则可以使用 Hadoop 兼容文件系统(HCFS)访问 Fileset。
通过这样的统一管理,企业可以获得一个全局的数据视图,同时减少上层引擎访问数据的复杂度,从 m 乘 n 降低到 m 加 n。此外,所有数据资产可以在一处进行统一管理,包括权限控制、数据接入、安全性和审计等。
3. 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 表。
4. 统一数据访问
Gravitino 为结构化和非结构化数据提供了统一的访问途径。用户只需与 Gravitino 交互,即可获取必要的元信息来操作数据。对于结构化数据,Gravitino 支持多引擎多种数据源的操作;对于非结构化数据,则提供了一个虚拟文件系统(gvfs),允许用户仅通过逻辑名称完成数据访问,屏蔽了底层物理存储细节。
5. 统一元数据管理
有了 Gravitino,整个数据链路上的元数据可以在一处定义并复用,避免了在不同环节反复定义相同元信息的问题。例如,Kafka 中的 schema 定义可以在下游的 Iceberg 或其他系统中直接复用,减少了重复工作,提高了效率。
03
Apache Gravitino 支持的典型场景
1. 场景 1:多区域数据合规
背景
在跨国公司或出海企业中,为了满足不同区域的数据合规要求,数据通常分散存储于多个云服务提供商的不同地区,如国内数据可能存储在阿里云、腾讯云,出海数据可能存储在 AWS、Azure 等。这种分散的模式给企业的数据管理以及汇总分析带来挑战。
解决方案
(1)元信息统一接入:Gravitino 可以将来自不同数据源的元信息集中管理,帮助企业了解各云位置的数据资产。
(2)分类分级与敏感信息标注:通过 Gravitino 提供的标签(tag)功能,甚至结合 AI 能力自动标注,对数据进行分类、分级,以标记出个人隐私信息或企业敏感信息。
(3)联邦计算与数据虚拟化:利用联邦计算引擎或数据虚拟化技术,在避免敏感信息访问和最小化跨域传输信息的同时,对分散的数据进行统一分析。子引擎可以在不同的数据中心运行,汇总加工结果后返回给上层引擎,从而确保既符合合规要求又提高了开发效率。
2. 场景 2:RAG 架构下的多数据源管理
背景
在 RAG (Retrieval-Augmented Generation)架构中,系统需要对接多种类型的企业数据源,如文档库、数据库、数据仓库等。这不仅增加了系统的复杂度,还涉及到权限管控的难题。
解决方案
(1)异构系统统一管理:Gravitino 能够统一纳管各种异构系统,使开发者可以通过单一入口访问所需的各种数据源。
(2)简化 RAG 开发:通过统一 SQL 引擎(如 Trino,SparkSQL)屏蔽了结构化数据源的差异,使用 GVFS 虚拟文件系统屏蔽非结构化数据的存储位置差异,从而降低 RAG 系统开发的复杂性。
(3)统一记录权限与日志:所有权限管理和数据访问日志都在 Gravitino 中统一记录,便于审查和审计。
3. 场景 3:增强智能数据问答
背景
智能问答系统或 Chat BI 应用依赖于大语言模型生成 SQL 查询的能力。然而,企业在实际操作中面临的数据源多样性增加了构建这类系统的难度。
解决方案
(1)数据资产盘点与元信息提供:Gravitino 可以帮助企业盘点内部数据资产,并以统一的方式为大语言模型提供必要的元信息,使得系统可以根据用户的自然语言问题生成准确的 SQL 语句。
(2)增强语义信息注册:Gravitino 支持在平台中注册增强的语义信息,如字段的业务含义、血缘、访问权限等。这些信息可以帮助大语言模型更好地理解用户问题,并生成更准确的 SQL 语句。
(3)减少对底层系统的侵入性:通过 Gravitino,企业可以减少对底层业务系统的侵入性,同时提供统一的对外服务接口。
4. 场景 4:数据工程师和 AI 团队能更高效地协同工作
背景
在许多公司中,数据团队和算法团队往往使用不同的技术平台和工具,导致数据交互效率低下。数据团队将数据加工清洗后,往往要导出给算法团队,算法工程师进一步要手动下载这些数据,从而进行后续处理和训练;在这个过程中,数据的使用和管理缺乏有效跟踪,容易造成数据的泄漏、重复拷贝等问题。
解决方案
(1)统一沟通平台:Gravitino 作为统一的元数据平台,促进了两个团队在同一平台上交流,发现和查找数据,提高了沟通效率。
(2)虚拟文件集创建:数据团队可以在处理完数据后,创建虚拟的 Fileset 而不必导出数据,只需分享 Fileset 名称给算法团队即可,后者可以直接加载数据用于训练。
(3)数据安全与追踪:在整个过程中,数据不需要被复制出去,其权限和访问审计都能得到良好跟踪,确保了数据的安全性和可追踪性。
综上所述,Apache Gravitino 在上述典型场景中提供了强大的支持,从数据治理到智能应用开发,再到团队间的高效协作,均体现了其在现代数据管理流程中的价值。通过统一元数据管理,不仅可以提高整个数据 pipeline 的效率,还能结合 AI 能力实现自动化工作,如早期问题发现、数据血缘追踪及数据标注等,显著提升了企业的数据管理水平和业务创新能力。
04
方案及成功案例
在过去的一年中,Apache Gravitino 获得了众多知名用户的青睐,包括小米、腾讯、哔哩哔哩(B 站)、Flywheel、网易游戏、唯品会、贝壳找房等。这些企业通过采用 Gravitino 来优化其数据管理和 AI 开发流程。
1. 案例 1:消费电子行业客户
背景
该客户是一家业务形态多样化的消费电子公司,很早就建立了公司层面的统一数据平台来管理其核心数据资产。随着业务扩展和技术进步,尤其是 AI 需求的增长,原有的统一元数据平台已无法满足业务的需求,特别是对非结构化数据管理的需求。
解决方案
(1)统一元数据管理:客户一开始就深入了解统一元数据管理的重要性,其可以帮助快速找到和使用数据,并落实数据权限等治理功能。
(2)非结构化数据管理:随着非结构化数据和 AI 需求的增加,客户通过 Gravitino 将 HDFS 、S3 对象存储等非结构化数据统一管理,接入元数据管理平台,实现数据权限的统一管理。
(3)在线训练与 AI 开发:通过 Gravitino ,客户实现了数据链路和 AI 训练链路的无缝连接,支持在线训练和 AI 开发,提升了数据管理和 AI 开发的效率。
效果
实现了数据资产的统一管理,形成了完整的数据资产地图。简化了开发流程,提升了 AI 开发效率。实现了 40% 的成本降低,主要通过在元数据访问层面发现并迁移冷数据和清理过期数据实现。2. 案例 2:国内家电制造业龙头
背景
这家家电企业在国内外市场均有业务,并意识到传统技术体系中缺乏对非结构化数据的有效治理,尤其是在 AI 发展的背景下,这一问题愈加突出。具体挑战包括:
(1)数据治理缺口:传统的技术体系能够很好地管理结构化数据,但对于非结构化数据则显得力不从心。
(2)内部协作障碍:不同部门之间存在信息孤岛现象,阻碍了数据共享和协同工作。
解决方案
(1)结构化与非结构化结合:利用 Gravitino 管理结构化和非结构化数据,使非结构化数据能够被类似结构化的方式处理,即标签化和坐标化。
(2)生态衔接:对接分布式文件系统、权限鉴权机制以及 Python 生态,确保不同系统间的良好衔接。
3. 案例 3:互联网 IT 行业客户:哔哩哔哩
背景
哔哩哔哩是一家内容丰富的互联网公司,拥有庞大的数据体量,并使用多种计算引擎。过去,这些引擎直接访问底层系统的元信息,导致复杂且高耦合的数据访问链路,同时缺乏有效的数据治理手段。具体问题包括:
(1)业务侧耦合度高:元数据使用方调用异构数据源方式复杂多样。
(2)数据治理能力有限:无法提供统一的审计、权限管理、TTL 能力等。
(3)半结构化/非结构化数据源缺乏管理
(4)跨源数据 Schema 维护成本高
解决方案
(1)开发 OneMeta 平台:基于 Gravitino 开发 OneMeta 平台,统一管理元数据。
(2)简化数据访问:上层引擎通过 OneMeta 访问数据,简化了数据访问链路。
(3)数据治理:通过标签和 TTL 等机制,对数据进行分类和治理。
效果
简化了上下层对接链路,增强了数据治理能力。显著减少了存储成本,例如通过标签和 TTL 策略减少了约 100 PB 的 HDFS EC 存储成本和 300 PB 的 HDFS TTL 存储成本。提高了数据访问效率,降低了系统维护成本。4. 案例 4:电商行业客户
背景
这是一家在多个电商平台销售产品的公司,需要汇总来自淘宝、天猫、抖音和亚马逊等平台的销售数据,以生成全局销售数字和库存数据。然而这些平台的数据彼此割裂,导致分析困难。
解决方案
(1)元数据汇总:首先通过 Gravitino 汇总多平台的元数据,为业务人员提供统一数据资产视图。
(2)数据抽取与加工:结合数据虚拟化引擎,每天自动跨平台抽取和加工数据,生成统一的运营报表。
效果
提供了统一的数据视图和运营报表。满足了数据在多云多域之间的合规使用。5. 案例 5:数据安全合规客户
背景
深圳某跨国企业数据资产分散在国内外,数据安全等级不同,需要为监管层和客户提供统一的数据合规视图。
解决方案
(1)引入 Gravitino:通过 Gravitino 管理所有数据资产,实现分类分级和标记,以满足不断变化的合规性要求,从而保持隐私控制。
(2)监控与报表:提供监控报表和运营报表,满足监管和客户的需求。
05
问答环节
Q1:Gravitino 是否具备管理 AI Model 的功能?具体有哪些特性?是否有实际应用案例?
A1:Gravitino 已经开发了 AI Model 管理功能,将在 0.8 版本中发布(目前已发布)。该功能主要支持以下特性:
模型目录化:用户可以创建目录,按主题组织模型,并在主题下创建多个模型版本。模型版本管理:在模型训练过程中,用户可以将版本信息注册到 Gravitino 中,包括模型的准确率、存储位置等元信息。模型标注:用户可以对模型进行标注,例如标记哪些模型可用于生产环境,哪些是测试模型。接口与 SDK:Gravitino 提供接口和 SDK,支持从不同任务流或训练框架中注册和获取模型元信息。Q2:Gravitino 如何在实时感知底层变化的同时,兼顾查询时获取元数据的效率?
A2:Gravitino 采用了一种按需(on-demand)的方式处理元数据更新,区别于传统的定时拉取(pull)方式。这意味着当用户调用 Gravitino 接口时,系统才会检查底层数据源是否有更新,并在必要时获取最新的元数据。这种方法能够确保元数据的实时性,同时通过以下措施提高查询性能:
缓存机制:开启缓存功能以减少频繁访问底层数据源带来的延迟。TTL 设置:对于不经常变动的元数据源,可设置较长的 TTL 时间,从而更快地返回最新元数据,降低系统负载。Q3:Gravitino 已经对接了哪些 AI 训练框架?
A3:理论上任何可以通过 Python 标准文件系统接口访问的数据存储都可以与 Gravitino 对接。这使得无论是 Ray 、 TensorFlow 还是其它单机训练程序都能通过 GVFS 文件系统访问 Gravitino 的 Fileset。
当前,Gravitino 已经对接了常见的存储系统,如 HDFS 、 S3 、 GCS 和 Azure Data Lake Service。对于其他存储系统,虽然尚未验证,但理论上只要它们支持 Hadoop 文件系统的接口,就可以实现对接。
Q4:Gravitino 是否可以替代 HMS?Gravitino 与哪些引擎适配最好?
A4:Gravitino 并不是要替代 Hive Metastore(HMS),而是作为统一的元数据接口层来增强 HMS 的能力。Gravitino 更像是一个前置代理,可以统一管理多个 HMS 实例(即使是不同版本的 HMS ),并通过 Gravitino 服务于上层的 Spark 或 Flink 等计算引擎。因此,Gravitino 和 HMS 之间不是替代关系,而是一种互补关系。
未来,随着像 Iceberg 这样的新 Lakehouse 架构的发展,Gravitino 将推荐使用其 REST Catalog 直接服务 Iceberg 客户端,而不再依赖 HMS 作为 Catalog 。这种架构更适合现代数据湖的需求,提高了灵活性和扩展性。
Q5:Gravitino 社区规划与 Roadmap。
A5:Gravitino 社区正在快速迭代,最新的 0.8 版本重点关注以下方面:
统一权限管理:提供统一的权限系统,减少对接不同数据系统的权限管理复杂度。非结构化数据管理:增强对非结构化数据的管理能力,支持 AI 模型的对接。Lakehouse 支持:持续跟进 Iceberg、Hudi 和Paimon 等 Lakehouse 架构的发展,将更多能力通过 Gravitino 暴露给用户。以上就是本次分享的内容,谢谢大家。
来源:DataFunTalk