OPPO案例 | Alluxio在DataAI湖仓一体的实践

分享嘉宾:
付庆午-OPPO数据架构组大数据架构师

在OPPO的实际应用中,我们将自研的Shuttle与Alluxio完美结合,使得整个Shuttle Service的性能得到显著提升,基本上实现了性能翻倍的效果。通过这一优化,我们成功降低了约一半的系统压力,同时吞吐量也直接翻倍。这样的结合不仅解决了性能问题,更为OPPO的服务体系注入了新的活力。

观看完整分享

完整文字版分享内容↓

分享主题:《Alluxio在Data&AI湖仓一体的实践》

Data&AI 一体数据湖仓架构

上图是OPPO目前的整体架构,主要分为两部分:

1、Data

2、AI

OPPO在数据领域主要专注于结构化数据,即通常使用SQL处理的数据。在AI领域,主要关注非结构化数据。为实现结构化和非结构化数据的统一管理,OPPO建立了一个名为Data and Catalog的系统,通过这种Catalog元数据的形式进行管理。同时,这也是一个数据湖服务,其中上层数据接入层采用Alluxio分布式缓存。

为什么我们选择使用Alluxio呢?

因为OPPO国内机房规模庞大,计算节点上的内存闲置量相当可观。我们估算平均每天约有1PB的内存处于闲置状态,并且希望通过这种分布式内存管理系统使其充分利用。橙色部分代表非结构化数据的管理,我们的目标是通过数据湖服务,使非结构化数据能够像结构化数据一样方便管理,并为AI训练提供加速。

DAA-Catalog

DAA-Catalog,即Data and AI Catalog,是我们团队在数据架构底层追求的目标,我们选择这个名字是因为OPPO致力于与业界最优秀的公司竞争。目前,我们认为在Data&AI领域,Databricks是最杰出的公司之一。无论是技术性、理念的先进性还是商业模式,Databricks都表现出色。

受到Databricks的Unicatalog启发,我们看到Databricks的Service数据和AI训练流程主要围绕Unity Catalog展开。因此,我们决定构建DAA-Catalog,以追求在数据湖仓库领域与业界最佳公司竞争的目标。

具体而言,这一功能分为两个主要模块:

Metastore(元数据存储):这一部分负责元数据的管理,底层基于Iceberg元数据管理。包括并发提交和生命周期管理。同时,我们使用Down Service进行管理,因为我们的数据首先会进入Alluxio的庞大内存缓存池,并实现每一条记录的实时插入和查询。

Management(管理):这一部分是DOM服务,为什么选择Down Service呢?因为数据进入后首先存储在Alluxio的内存中,实现了秒级的实时性。整个流程中,数据进来后会自动通过Catalog下沉到Iceberg,元数据基本上都在Alluxio中。

为什么我们要实现这样的秒级实时功能呢?

主要是因为我们之前使用Iceberg时发现一个严重问题,它基本上需要每5分钟做一次Commit,每次Commit都会生成大量小文件,对Flink计算系统和HDFS的元数据都造成了很大的压力。同时,还需要手动清理和合并这些文件。通过Alluxio服务,数据可以直接进入内存,Down Service也通过Catalog进行管理。整个流程中,数据进入后会自动下沉到Iceberg,元数据基本上都在Alluxio中。

由于OPPO与Alluxio有许多合作,我们在2.9版本的基础上做了一些调整,性能得到了大幅提升。在数据湖上实现了流式文件的读写,每一条数据都可以像一个commit一样,而不需要整个文件进行commit。

结构化数据的加速

随着大数据的发展,许多基础设施已经相当完善,解决了许多不同场景的问题。然而,我们的关注点是如何更有效地利用闲置资源和内存。因此,我们致力于从两个方面入手:一个是缓存加速,另一个是对热表和索引的优化。

我们提出了一个名为“Dynamic Cluster”的概念,它是一个动态聚合数据的功能,灵感来自于Databricks的一项技术。尽管内部也使用了Hallway曲线,但我们在其基础上实现了“the order”和“增量 the order”排序算法,将它们融合在一起形成了Dynamic Cluster。这一创新可以在数据录入后动态地聚合数据以提升查询效率。与Hallway曲线相比,“the order”算法的效率更高,但Hallway曲线在实时变动方面的表现更为优越。这种融合为我们提供了更灵活、高效的查询和聚合数据的方式。

非结构化数据管理

上图展示了我们在非结构化数据领域的一些工作,主要涉及到AI领域。在OPPO内部,AI训练一开始使用的工具相对较老旧,通常是通过脚本直接读取数据,或者将数据以裸的txt文件、裸的image文件形式存放在对象存储上。借助Transfer服务,我们能够将数据自动导入数据湖,并将打包好的图片数据切割成update set的格式。在AI领域,尤其是在处理图片领域,update set是一个高效的数据集接口,它不仅兼容web数据集接口,还可以转换成H5格式。

我们的目标是通过对元数据的处理将非结构化数据管理变得像结构化数据一样便捷。在数据转换的过程中,将非结构化数据的元数据写入Catalog中。同时,我们与大模型结合,将元数据的一些信息写入向量数据库,以便更轻松地使用大模型或自然语言查询湖仓中的数据。这一整合工作的目标是提高对非结构化数据的管理效率,使得其更加符合结构化数据的管理方式。

非结构化数据 - 元数据管理示例

上图是OPPO非结构化数据管理的一个实例,实现可以像SQL一样去搜索文本、图片的位置。

DataPrompter

选择构建DataPrompter的初衷源自对更好地运用大模型的追求。OPPO致力于将数据与大模型结合的领域,推出了一个名为Data Chart的产品,通过内部聊天软件,用户可以轻松查询所有数据。例如,用户可以方便地查询昨天手机的销量,或者比较与小米手机销量的差异,通过自然语言进行数据分析。

在产品构建过程中,每个领域的数据表需要专业的业务人员输入Prompter。这对整个数据湖仓或产品的推广带来了挑战,因为每一张表的Prompter都需要花费相当长的时间。例如,想要输入财务表数据,需要详细填写表的字段、业务域含义、展开维表等专业且技巧性的信息。

我们的最终目标是使得数据进入湖仓后,大模型能够轻松理解上层数据。在数据入湖的过程中,业务需展示一些规定的信息,并结合我们在Data Prompter方面积累的经验,利用HBO Service提供的一些常用查询,最终生成一个使大模型容易理解的Prompter范本。这样的结合旨在让模型更好地理解业务数据,使湖仓与大模型的结合更为顺畅。

Alluxio助力秒级实时入湖

Alluxio助力秒级实时入湖,主要分为:

1、Real-data

2、Base-data

3、Dump Service

4、文件流式读写

Alluxio在湖仓架构中的实践

Alluxio与Spark RSS结合

我们最初选择将Alluxio与Spark RSS服务结合,通过自研的Spark Shuttle Service并以Shuttle的名义开源。起初,我们的底层基于分布式文件系统,但随后在性能方面遇到了一些问题,于是我们找到了Alluxio。

Shuttle与Alluxio的完美结合使得整个Shuttle Service的性能得到了显著提升,基本上实现了性能翻倍的效果。通过这一优化,我们成功降低了约一半的系统压力,同时吞吐量也直接翻倍。这次的结合不仅解决了性能问题,更为我们的服务体系注入了新的活力。

在OPPO的后续研发中,基于Alluxio+Shuttle的框架实现了更多创新。我们将Shuttle算子和广播算子都优化到内存数据层面,通过高效的内存数据交互,特别是在处理单点Reduce时,当数据倾斜的情况下,原本耗时长达50分钟的排序操作,迁移到新方案后,成功将处理时间降低到了10分钟以内。这一优化不仅大大提高了处理效率,也有效缓解了数据倾斜对系统性能的影响。

广播成果非常显著,特别是在Spark中,默认广播大小为10M,因为所有的广播数据都必须在Java端存放,在经过Java序列化后容易发生膨胀,进而引发OOM(Out of Memory)问题,这在线上环境中经常发生。

为了解决这个问题,我们目前将广播数据存放到Alluxio中。这样一来,几乎可以广播任意大小的数据,最大可达10个G。这一创新在OPPO线上已经有多个案例成功实施,对提升效率产生了显著的影响。

Alluxio在公有云/混合云上的应用实践

在OPPO的公有云大数据体系中,特别是在新加坡地区,我们主要采用AWS作为基础架构。在早期阶段,我们使用了AWS提供的弹性计算服务(EMR)。然而,近年来,行业整体经济形势不太乐观,许多企业都在追求降低成本和提高效率。面对这一趋势,我们在海外公有云领域提出了自研的解决方案,利用云上的弹性资源搭建一套新的架构。这一创新方案的核心是依赖于Alluxio+Shuttle的组合,为我们的大数据体系提供了关键的支持。

Alluxio+Shuttle解决方案的显著优势在于,Alluxio集群并非被Shuttle独占,它可以为其他服务提供支持,包括数据缓存和元数据缓存。在公有云中,我们深知S3上的List操作在提交时非常耗时,通过结合Alluxio和开源的Magic commit、 Shuttle的方案,我们取得了显著的降本效果,大约降低了计算成本的80%。

在混合云环境中,我们为AI团队提供服务。由于数据湖底层有对象存储,我们在训练过程中利用了阿里云上的GPU卡,同时也结合了自建的GPU资源。由于专线带宽有限且成本较高,数据拷贝时需要一个有效的缓存层。最初,我们采用了存储团队提供的解决方案,但其扩展性和性能并不理想。引入Alluxio后,我们在多个场景中实现了数倍的IO加速,为数据处理提供了更高效的支持。

展望

OPPO的集群规模在国内已经达到上万台,形成了相当庞大的规模。我们计划在未来深入挖掘内存资源,以更充分地利用内部的存储空间。团队内部同时拥有实时计算框架Flink和离线处理框架Spark,这两者可以相互借鉴Alluxio的应用经验,实现Alluxio与数据湖的深度融合开发。

在大数据和机器学习结合的浪潮中,我们紧跟行业趋势。将数据架构从底层与人工智能(AI)深度结合,为AI提供优质的服务作为首要任务。这一融合不仅是技术上的进步,更是对未来发展的战略规划。

最后,我们将进一步挖掘Alluxio的优势,助力我们在公有云环境中降低成本。这不仅涉及技术上的优化,也包括对云计算资源的更有效管理,为公司的可持续发展提供坚实支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/486469.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【免费】教你如何考取腾讯云《云函数 SCF》认证

云函数 SCF考试PC网址 云函数 SCF - 认证中心 - 腾讯产业互联网学堂 (tencent.com) 注:免费认证,里面包含免费的课程,浏览器用Edge。 文章目录 目录 文章目录 前言 一、备考流程 二、注意事项 总结 前言 随着云计算的不断发展&#xf…

基于word2vec+LSTM模型实现百度贴吧恶意评论预测

大家好,我是带我去滑雪! Word2Vec模型能够将词语映射到高维空间中的向量表示,同时保留了词语之间的语义信息和上下文关系。这使得模型能够更好地理解评论中的语境和含义。LSTM模型是一种适用于处理序列数据的深度学习模型,能够有效…

面对淘天的升级,如果说我们要在渠道运营端口做出一些改变,最重要、最应该、最优先的是什么?|淘天商品API数据采集接口

2024年,电商真正跨入了新AI时代。 在这个新时代,工具、方法、体系……都在升级,堪称一日千里。 商家如何更好地顺应时代的变化?2024年,我给大家的建议总结为两句话。 第一句是借平台的红利; 第二句是建立自…

【VTKExamples::Points】第十期 NormalEstimation

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例NormalEstimation,并解析接口vtkPCANormalEstimation,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力…

I.MX6ULL_Linux_驱动篇(55)linux 网络驱动

网络驱动是 linux 里面驱动三巨头之一, linux 下的网络功能非常强大,嵌入式 linux 中也常常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动,本章我们就来学习一下linux 里面的网络设备驱动。 嵌入式网络简介 网络硬件接口 首先…

【C语言】tcp_sendmsg_locked

一、讲解 tcp_sendmsg_locked 函数是 Linux 内核中实现 TCP 数据发送的一个核心函数。这个函数被调用来将用户空间的数据通过 TCP 发送出去。以下是该函数的基本工作流程的中文解释: 1. 函数初始化和检查: - 它首先检查是否使用了 TCP 零拷贝发送&am…

【微服务】Spring Boot 版本升级到 2.7.18

前言 目前项目上扫描出一些 Java 依赖的代码漏洞&#xff0c;需要对现有依赖版本升级&#xff0c;记录一下遇到的问题。 <spring-boot.version>2.3.2.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR9</spring-cloud.version> <s…

RuoYi-Vue-Plus(登录流程-验证码生成)

一、登录流程 1- 进入登录页面&#xff0c;调用 com.ruoyi.web.controller.common.CaptchaController 类中的 captchaImage 方法&#xff0c;生成base64的图片 以及 UUID 2- 提交 登录信息 验证码 uuid 比对 错误&#xff1a;返回错误信息&#xff0c;删除缓存的验证码 成功…

一个优秀的开源ChatGpt外壳项目(lobe-chat)

lobe-chat 简介&#xff1a; 开源、现代化设计的 ChatGPT/LLMs 聊天应用与开发框架支持语音合成、多模态、可扩展的插件系统&#xff0c;一键免费拥有你自己的 ChatGPT/Gemini/Ollama 应用。 下载lobe-chat lobe-chat项目开源地址&#xff1a;GitHub - lobehub/lobe-chat: &am…

MySQL高可用解决方案――从主从复制到InnoDB Cluster架构

2024送书福利正式起航 关注「哪吒编程」&#xff0c;提升Java技能 文末送5本《MySQL高可用解决方案――从主从复制到InnoDB Cluster架构》 大家好&#xff0c;我是哪吒。 爱奇艺每天都为数以亿计的用户提供7x24小时不间断的视频服务。通过爱奇艺的平台&#xff0c;用户可以…

查看Linux系统重启的四种基本命令

目录 前言1. last2. uptime3. journalctl4. dmesg 前言 对于排查其原因推荐阅读&#xff1a;详细分析服务器自动重启原因&#xff08;涉及Linux、Window&#xff09; 在Linux中&#xff0c;有多种命令可以查看系统重启的信息 以下是其中一些常用的命令及其解释&#xff1a; …

跨时钟域学习记录(一)

亚稳态 亚稳态是电平介于高低电平之间的一种暂时状态。在同步系统中&#xff0c;当寄存器的信号无法满足建立时间和保持时间时&#xff0c;输出端的信号就可能出现亚稳态。在异步系统中&#xff0c;亚稳态并非一定在建立时间和保持时间无法满足时出现。   受噪声、温度、电压…

ZYNQ学习之PetaLinux开发环境搭建

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ FTP&#xff1a;File Transfer Protocol 一、Ubuntu 和 Windows 文件互传 1.1、开启 Ubu…

HarmonyOS系统开发ArkTS常用组件文本及参数(五)

目录 一、Text组件 1、Text组件案例 二、Text组件参数 1、string字符串类型 2、Resources类型 2.1、resources中内容配置 base/element/string.json 中的内容 zh_US/element/string.json 中的内容 es_US/element/string.json 中的内容 2.2、环境适配 适配英文 适配中文…

初探Ruby编程语言

文章目录 引言一、Ruby简史二、Ruby特性三、安装Ruby四、命令行执行Ruby五、Ruby的编程模型六、案例演示结语 引言 大家好&#xff0c;今天我们将一起探索一门历史悠久、充满魅力的编程语言——Ruby。Ruby是由松本行弘&#xff08;Yukihiro Matsumoto&#xff09;于1993年发明…

计算机网络实验——学习记录二(HTTP协议)

1. Linux主机上连接互联网的网络接口是&#xff1a;ens33。 2. 在显示过滤器&#xff08;Filter&#xff09;中输入“ http.host www.zzu.edu.cn”&#xff0c;筛选出HTTP协议报文首部行中包含“ Host&#xff1a;www.zzu.edu.cn”的报文&#xff08;目的地址是Web服务器的报…

微前端——qiankun

一、微前端 微前端是指存在于浏览器中的微服务&#xff0c;其借鉴了后端微服务的架构理念&#xff0c;将微服务的概念扩展到前端。即将一个大型的前端应用拆分为成多个模块&#xff0c;每个微前端模块可以有不同的团队开发并进行管理&#xff0c;且可以自主选择框架&#xff0…

RSTP、MSTP、VRRP

RSTP协议原理与配置 问题一、STP的收敛延时&#xff08;30秒&#xff08;有BP端口情况下RP端口down&#xff09;或者50秒&#xff08;没有BP端口情况下RP端口down&#xff09;&#xff09; RSTP&#xff1a;Rapid Spanning Tree Protocol RSTP和STP从原理流程上一样&#xf…

Vivado的SIMULATION的Scope和source的层级怎么看

一、查看source source的层级可以很容易看出来&#xff0c;上面是tb文件的名称&#xff0c;下面的 axi_full_wrapper : axi_full_wrapper (axi full wrapper.v) (1)中&#xff0c;右边的那个axi_full_wrapper是模块名称&#xff0c;也是源文件名称&#xff08;因为module之后接…

天正T20V10 下载地址及安装教程

天正软件是一家专业的工程设计软件和解决方案提供商&#xff0c;主要致力于建筑、结构、暖通、给排水、电气等领域的设计和施工工程。他们开发和提供多种软件产品&#xff0c;涵盖了建筑设计、结构设计、暖通空调设计、给排水设计、电气设计等方面。 天正软件的产品具有丰富的…
最新文章