分享好友 最新动态首页 最新动态分类 切换频道
Apache Gravitino 在B站的最佳实践
2024-12-26 22:25

01 元数据管理痛点剖析

上图是我们在引入 Gravitino 之前的数据系统架构图。我们的元数据最大的使用方为数据平台,也包括了其它一些数据服务,如 SQL Scan,用于对 SQL 进行预检查,以及 SDM 数据智能编排服务等。除此之外,其它一些引擎也需要获取、增加、删除和查询元数据信息。

从图中可以看出,这一架构存在诸多问题:

    02 Apache Gravitino 背景概览

    1.元数据管理中心化

    基于以上痛点,我们想引入一个中心化的元数据管理组件。需要实现以下几点,以达到理想的效果:

    ① 解耦元数据的使用方和各种组件,以降低元数据的使用成本。

    ② 跨源数据统一维护 Schema,降低跨源数据使用成本。

    ③ 提供统一的审计、TTL特性,HDFS EC 通过数据治理实现降本。

    ④ 集中管理和治理AI的数据资产。

    ⑤ 建立统一的权限管控机制,提高数据安全性。

    2.元数据管理组件对比

    我们调研了主流的开源元数据管理组件,包括 Metacat、WaggleDance 和 Open Metadata。这些组件存在以下缺点:它们对多引擎的支持有限,功能相对单一,仅提供了基本的元数据功能,难以扩展,社区活跃度有限,可能没有大版本更新和迭代计划。

    3.What is Gravitino?

    基于以上调研,我们发现了 Apache Gravitino。它是一个高性能的元数据管理平台,可以处理不同类型的元数据和来自不同来源的数据信息。此外,它还提供 AI 数据资产管理能力。以下是 Gravitino 的整体架构图,它满足了我们对统一元数据的期望。

    第一层是数据应用层,包括数据平台、B 站等数据应用组件以及引擎,都通过这一层接入。

    第二层是接口层,目前 Gravitino 提供了 REST 统一接口,对外提供元数据的访问能力,并且还提供了 Thrift 和 JDBC 接口,供引擎进行具体接入。

    第三层是 Gravitino 的核心组件,其数据分类基于 Catalog 进行管理。不同数据源具有不同的 Catalog。整个层级架构基于 MetalLake Catalog Schema 和 Table 的概念。Schema 是我们通常理解中的数据库概念。对于 FileSet,文件管理也基于 Catalog。例如,Hive 是一个 HiveCatalog。Fileset 代表一个独立的文件系统的目录, 也可以理解为一个文件集,则对应 FilesetCatalog

    最底层是连接层,它连接了不同的数据源。例如,对于 Hive 表,其背后是 Hive MetaStore;对于 Iceberg 表,则是提供的统一 REST Catalog。此外,Gravitino 内部还维护了一套自己的存储系统。不过,需要注意的是,Gravitino 本身并不存储元数据,这部分主要用于维护 Gravitino 内部的一些数据,如 Catalog 和 Meter Lake 等信息。

    Gravitino 能够做到以下五点:

      虽然它还处于项目早期阶段,但我们提到的很多问题都能得到社区的积极回应,而且越来越多的开发者加入了 Gravitino 的开发。

       4.Gravitino FileSet

      FileSet 是一个包含多个 HDFS 文件的目录和集合,可以理解为一个文件集。用户使用 FileSet 来管理非表格数据,特别是在生产环境中,主要是 HDFS 文件。FileSet 映射到文件系统上的具体目录,从右图中可以看出,它遵循了 Gravitino 的标准架构,包括 MetaLake、Catalog、Schema 和具体 FileSet。每个 FileSet 都有具体的 HDFS 存储路径,还包括其他维护的 FileSet 元数据信息,如大小、文件数量、创建时间等。

      Gravitino 管理的 FileSet 将非表数据结构和表结构数据以统一的资产方式进行管理。用户可以通过 FileSet 轻松访问文件和目录,无需通过实际物理路径访问数据文件集。

      03 Apache Gravitino 生产实践

      接下来,我们将介绍在B站上引入Apache Gravitino的具体生产实践及其带来的收益。

      1.OneMeta:统一的元数据管理服务

      首先,我们基于 Gravitino 搭建了内部组件 OneMeta。它对外提供了统一的元数据管理服务,底层仍然基于 Gravitino 实现。在之后的部分谈到 OneMeta 时,可以理解为与 Gravitino 等价。我们在 Gravitino 的 REST 和 REST 层接口上进行了扩展,并满足了用户的定制化需求。

      第二,我们对 catalog 进行扩展,包括定制化接口和下钻功能。实现了社区尚未提供的接口,例如根据用户的筛选条件筛选分区并加载文件及其具体元数据信息。此外,我们还支持批量查询等接口。虽然社区目前只支持管理到 FileSet 这一层级,但我们在此层级上做了下钻,支持浏览 fileset 所代表的文件系统目录下的相关文件信息

      第三,OneMeta 针对B站特有的接口改造和 Gravitino 内核代码完全解耦,遵循开闭原则,将未来升级社区版本过程中的改造成本降到最低

      2.元数据管理架构演进

      元数据架构管理演进带来的收入有如下三点:

      (1)降低了元数据的使用成本。当前架构中,各业务组件(如数据平台、治理工具、SQL Scan、SDM 等)获取元数据的方式复杂且不统一,有的通过引擎获取,有的依赖 Hive Metastore 或 Iceberg SDK,调用方式因数据源不同而异,同时需要对不同数据源的元数据进行统一视图处理。此外,底层元数据源的版本变更会影响上层使用,导致用户使用成本高。而引入 Gravitino 后,所有用户的元数据统一从 OneMeta 获取,解耦了用户与底层数据源的复杂依赖,大幅降低了元数据使用成本。

      (2)解决了由于引擎和数据源之间的差异导致的元数据不一致问题。我们曾在生产中遇到过一些案例,例如,用户使用Iceberg表,其中一部分元数据信息存储在Hive元数据仓库中,而另一部分则由Iceberg自己维护。因此,用户需要从两个不同的地方获取两份数据。现在,用户只需从一个地方获取相应的元数据信息即可,还能避免数据不一致的问题。

      (3)解决了Hive MetaStore 部分造成的性能瓶颈。

        3.跨数据源Schema管理

        在引入 OneMeta(Gravitino)前,用户可以通过两种方式管理跨数据源 Schema:

        使用 memory-catalog,需要手动编写 DDL 进行加载,并指定具体的 schema 形态和 Kafka 连接信息;使用 keeper-Catalog,可以加载缓存在上层的元数据信息。但存在缺陷,如用户需要注明 Kafka 的集群链接、schema 维护成本较高,并且整个系统也产生了反向依赖,还容易出现上下游 schema 不一致的情况,导致任务无法成功运行。

        我们希望用户不再需要手动编写 DDL 和指定 Kafka 的连接信息,只需指定一个具体的 Kafka topic name 即可启动 Flink 任务。Flink 会在启动时通过 catalog 向 meta 读取相关信息。

        我们将以 PB 格式为例,介绍如何进行基于 Gravitino 的 Kafka 去 DDL 生产实践。目前,我们在生产中支持 Kafka 的消息格式,包括 JSON、分隔符和 PB。

        以 PB 格式为例,我们实现了基于 PB 打包编译全闭环的跨域 schema 管理。具体流程是:

        (1)第一个实践

        (2)Flink 启动新任务时,需要根据 topic name 获取该 topic 的具体 schema 信息,OneMeta 从Kafka Schema Registry存储中获取具体产物信息并返回给 Flink。

        (3)Flink 使用类加载器进行解析编译好的schema。基于 Flink 团队实现的独立的类加载器, 下载 HDFS 上编译好的PB文件和相关依赖包,实现非结构类型的动态schema解析

        跨源 schema 管理优化带来了以下收益:

        (1)实现了中心化的 Kafka 原始信息管理,避免了数据不一致性的问题;

        (2)降低了用户使用 Kafka 的消息成本;

        (3)降低了任务维护成本,提高了 Flink 任务的上线效率。

        4.HDFS文件治理现状

        B 站内部 HDFS 文件治理数据量达到了 EB 级别,其中非表路径占总存储的 30%,在 AI 商业场景下,HDFS 存储量的增长较高,存在大量未被规范管理的 HDFS 路径。用户需要将 Airflow 原来的路径管理逻辑迁移到我们的大数据平台上。目前我们对 Hive 路径进行了 EC 和 TTL 操作,非表路径存在大量 EC 和 TTL 治理需求。

        5.Fileset文件管理

        FileSet是文件集的概念,是我们内部大数据平台管理页面的基础。这个页面直接面向各种数据分析、AI和商业数据分析师使用。图中是基于FileSet的管理页面,用户不断向下点击以获取子目录或子目录下的特定文件,支持对FileSet等进行模糊查询等功能。

        我们已经使用 Fileset 将 HDFS 文件管理起来,因此我们希望能够基于 FileSet 对 HDFS 进行具体文件治理,以达到降本增效的效果并获得收益。以下是基于 FileSet 文件治理的主要流程图。FileSet 文件治理主要分为两个部分,即 EC 和 TTL,它们的实现逻辑和架构都类似。

        首先,我们可以看到左边的流程图展示了整个过程:

        (1)数据治理平台制定治理策略;

        (2)通过 OneMeta 对相应 FileSet 进行 TTL 和 EC 打标;

        (3)SDM(智能数据管理)读取 OneMeta tag,向 HDFS Server 发送 TTL 和 EC 指令;

        (4)数据治理工程师根据看板进行治理优化。

        目前我们正在推进和建设 HDFS EC,预计可以减少约 100PB 的存储成本。对于基于 FileSet 对 HDFS 文件进行的 TTL,我们可以减少约 300PB 的存储成本。

        接下将介绍 FileSet 在 AI 文件管理中的具体应用,这里的 VIEWFS 对应的是 Gravitino 社区的 GVFS 概念。FileSet 不仅可以通过前端页面让用户进行管控,还支持用户通过 Spark JAR、Spark SQL 和 Python 客户端进行操作。例如,在 Spark 下,我们可以直接在 Spark 代码中读取和写入 FileSet。用户可以直接使用这种格式,无需引入任何外部依赖或升级 HDFS Client。具体的实现方法将在后续章节中详细介绍,只需将原来依赖的 HDFS 物理路径替换为 FileSet 即可。

        对于 Python 客户端,不需要引入任何依赖,只需修改写法即可。用户从物理路径切换到推荐的文件系统非常便捷,一旦接入 FileSet,元数据信息就能得到更好的维护。此外,FileSet 还提供了文件交接和其他信息查看等便利功能。

        6. GVFS

        为了使用 Gravitino 管理的 Fileset,Gravitino 提供了一个虚拟文件系统层,称为 Gravitino Virtual File System(GVFS):

        • 在 Java 中,它基于 Hadoop Compatible File System(HCFS)接口构建。

        • 在 Python 中,它基于 fsspec 接口构建。

        用户可以在 Spark jar、Spark SQL、Python 客户端等场景使用 Metalake-Catalog-Schema-Fileset 的范式,基于 GVFS 对底层文件集/文件进行访问

        接下来我们将详细介绍如何实现 GVFS。

        基于 B 站存储团队对外提供的hdfs版本目前会统一访问一层NNproxy 的网关服务,  用户日常使用过程中无需任何改动,无需升级对应 HDFS Client 版本 对于所有需要使用FileSet 的用户,须在B站资产管理平台注册Fileset,  然后可以选择保持原生的hdfs文件目录的访问姿势不变,  通过NNproxy 定时地异步加载  OneMeta 的fileset 信息。基于真实传递过来的 HDFS 路径进行 Fileset 的反查,实现例如目文件系统的访问血缘记录, 核心路径读写保护等一系列的增强功能。 另外如果用户希望在访问文件的作业上提高可读性和可维护性,我们推荐用户使用 Gravitino 官方推荐的三段式(catalog/schema/fileset)的写法并且保持协议不变(viewfs)的基础上进行规范的文件访问

        7.Iceberg branch 的支持

        在b站的大数据架构中,以Iceberg 为代表的湖式数据源被广泛使用。我们发现,基于iceberg 的新特性 —— 表级别的branch 功能能够在多种场景下起到降本增效的作用。以AI场景下的典型 case 为例,在特定数据进行实验,验证其有效性或评估对模型的影响时,用户会以一张Iceberg为底表,建出多个schema 相似,但数据基本一致的表。而如果基于iceberg 表的branch 功能,我们可以以底表为main 分支,建出多个schema 不同的分支而共用一套数据,避免重复建表,大量节约存储资源,以下是基于OneMeta实现的branch的部分管理页面

        从用户视角来看,用户可以对已存在的表进行 branch 的管理功能:所有的 iceberg 表默认均为 main 分支,用户可基于任意已有的 base 分支新创建分支,新建的分支基于在 base 分支进行元数据的编辑(包含表字段信息,分支有效期,责任人等),新分支与 base 分支的元数据完全独立,可由不同的负责人使用并维护。

        04 Apache Gravitino 规划展望

        在基于 Gravitino 进行生产落地后,我们取得了显著的收益:

        • 降低了元数据使用成本:通过统一的元数据管理,解耦了用户与底层数据源的复杂依赖,大幅降低用户使用元数据的成本。

        • 解决了元数据不一致性问题:解决了 Iceberg SDK与 Hive MetaStore 维护的元数据不一致问题,提升了数据一致性和用户体验。

        • 优化了 HDFS 文件治理:通过 EC 和 TTL 策略,显著降低了存储成本,预计节省超过几百 PB 的存储。

        • 提升了任务效率:通过跨源 Schema 管理和 Fileset 管理,简化了用户操作,减少了任务的开发和维护成本。

        • 为用户提供了更丰富的功能:通过想用户提供 iceberg branch 能力,丰富了用户对 iceberg 表的使用方式,同时也降低了数据存储成本

        基于这些成果,我们对 Gravitino 未来的发展做出了以下规划,每个方向均针对当前痛点和进一步优化需求提出了解决思路:

        1. 基于 Gravitino 的统一权限管理

        • 当前数据权限管理存在分散且复杂的现状,不同数据源和应用场景使用不同的权限体系,导致管理成本高、审计复杂。我们希望通过 Gravitino 实现跨数据源的一体化权限管控,提供统一的用户认证、权限分配和审计能力,从而增强数据安全性并简化运维。

        2. 扩展 UDF 数据资源的管理能力

        • 在 AI 和数据分析场景中,UDF(用户自定义函数)是重要的计算资产。然而,UDF 的管理和版本控制目前缺乏标准化手段。我们计划通过 Gravitino 的扩展,为 UDF 提供统一的元数据管理和资源管控能力,方便用户维护和复用 UDF,并降低使用门槛。

        3. 接入更多内部数据源,实现统一管理

        • 当前 Gravitino 已公司内大部分大数据场景下的数据源,但尚有部分内部数据源未被纳入统一管理体系。通过全面接入所有数据源,能够进一步提升数据治理能力,为用户提供更完整的全域数据视图。

        4. OneMeta 对接所有引擎,统一访问范式

        • 目前不同计算引擎(如 Spark、Flink、Trino 等)在访问元数据时使用不同的方式。我们计划通过 OneMeta 提供统一的访问接口,使所有引擎能够采用一致的访问模式,减少开发工作量,同时提高系统的兼容性和稳定性。

        5. 完善 AI 场景下的数据治理(如模型版本管理)

        • 随着 AI 的普及,模型版本管理和数据治理的重要性日益凸显。我们计划通过 Gravitino 对 AI 模型及其数据资产进行全生命周期管理,包括模型的版本控制、评估与溯源,从而提升 AI 项目的可靠性和可维护性。

        6. Fileset 对接对象存储,打通文件系统与流/批/OLAP 引擎

        • 目前 Fileset 主要应用于 HDFS 文件管理。我们计划扩展 Fileset 支持对象存储,并与流处理、批处理、OLAP 等引擎深度集成,实现数据全链路血缘的可视化和访问日志记录,进一步提高数据治理的透明度与效率。

        -End-

        作者丨天航、peter_wei、kking

        最新文章
        黄埔网站推广优化平台,企业线上崛起的全方位助力解析
        黄埔网站推广优化平台深入解析,为企业提供全面在线推广解决方案,涵盖SEO、内容营销、数据分析等,助力企业高效提升网络曝光度和品牌影响力,成为企业线上崛起的强大助力。在互联网高速发展的今天,网站已经成为企业展示形象、拓展业务、
        进口数控刀具品牌排行榜前十名(全球十大数控机械加工刀具知名品牌)
        1、德国(MAPAL)玛帕Die MAPAL Dr.Kress KG是一家中型的家族企业,七十年来一直在精密刀具市场占据领先地位。秉承着创新的工艺解决方案和执着于精密加工,MAPAL在全球市场一直以质量、精密和经济性著称。MAPAL自从Georg Kress博士在1950年创
        新网站百度收录关键技巧:优质内容与合理架构助力网站成长
        新网站的百度收录对它的成长极为关键。这关系到网站的众多要素,无论是内容还是结构新网站如何让百度收录,都必须满足百度的收录要求。以下是一些实用的技巧。优质内容若网站内容空洞或存在抄袭,百度是不会将其纳入索引的。内容必须具备价
        重磅首发|《2024中国人工智能多模态大模型企业综合竞争力20强研究报告》
        人工智能是推动科技跨越发展、产业优化升级、生产力整体跃升的战略性新兴产业。自美国开放人工智能研究中心OpenAI对外发布首个文生视频大模型Sora以来,多模态大模型作为人工智能的核心组成部分,以其强大的学习能力和巨大的应用潜力,正在
        铁甲虫(铁甲虫图片)
        1、打开【AI】软件,新建画布,使用【椭圆工具】绘制一个圆,在【属性】中选择圆头端点,圆形边角和使描边外侧对齐。2、钢笔工具,绘制如图形状,作为河流,画笔工具,选择一种画笔样式,作为水花。 钢笔工具,绘制2个如图形状,作为2个悬
        燧原科技(Enflame Technology) 针对神经网络训练的创新型云人工智能芯片,使用Mentor的Tessent测试设计(DFT)解决方案
        December 16, 2019 -- ​Mentor, a Siemens business, today announced that leading artificial intelligence (AI) solution provider Enflame Technology recently used Mentor’s Tessent™ software product family
        营销沙盘实训总结
        简介:好文档下载网小编为你整理了多篇相关的《营销沙盘实训总结》,但愿对你工作学习有帮助,当然你在好文档下载网还可以找到更多《营销沙盘实训总结》。营销沙盘实训总结(通用24篇)  虽然沙盘实训是经管人必经的锻炼,事先做好了准备
        大伟分析|SEO优化排名怎样做会提升名次?
          通常在SEO优化过程中,每个阶段都有每个阶段的侧重点,着重点不同导致每个阶段的优化策略会有所偏重。你在某个阶段去着重优化这个网站最需要的那一块,这个时候所带来的效果远远比你一直重复的去优化某项操作所带来的效果要好得多。 
        青年最关注的改变未来十大变革科技
        时代呼唤创新创新引领未来近日清华大学探臻科技评论社2024“青年最关注的改变未来十大变革科技”榜单正式发布!11月30日,在“青年创新未来·探臻青年科技论坛”现场,2024“青年最关注的改变未来十大变革科技”榜单评选结果发布。以下是入
        高效整合建站资源策略,提升网站搭建效率
          在当今快节奏的商业环境中,企业对于建立高效、专业的网站需求日益增长。为了实现这一目标,有效整合建站资源变得尤为重要。通过合理整合各类资源,企业不仅能够提升建站效率,还能够降低成本,从而增强市场竞争力。  一、明确建站目
        相关文章
        推荐文章
        发表评论
        0评