大模型、实时需求推动湖仓平台走向开放

大模型、实时需求高涨

AGI 时代,以 ChatGPT、Midjourney 等为代表的大模型迅速应用加速了 AI 普及,越来越多的企业选择搭建自己的 AI 基础设施,训练行业大模型。

另一方面,企业为了在瞬息万变的市场环境中更快的做出商业决策,正在将数据平台从离线转向实时数据平台。“双十一 ”和春晚直播实时大屏、银行和证券交易行为实时监控、电商和短视频的实时个性化推荐等只是全行业在线化的冰山一角。


AI + 实时,俨然成为了企业数据平台无法避免的技术焦点。那么,如何让企业数据平台拥抱AI+实时的双重能力?
为什么难实现?

对于现阶段的大数据平台和传统数据仓库等企业数据平台,姑且不论同时整合 AI + 实时,单独的 AI 平台或者实时数据平台都不得不通过复杂架构,耗费大量资源和人力来实现。我们不妨先来分别看看现在的 AI 和实时架构是如何实现的。

AI 与数据平台

机器学习和人工智能的模型训练采用结构化数据和非结构化数据。结构化数据价值非常高,数据质量也非常好,因此有些 AI 问题主要基于结构化的数据建模。一个很典型的例子就是银行基于结构化数据,面向个人客户开发的信用评分卡,既有可解释性,又能满足实时的信用评估。

那么,传统数仓的大量结构化数据该如何被用于训练 AI 模型呢?常见的方式是,当机器学习平台需要访问数据集时,需要先通过 JDBC 或者外部表的形式把数据从数据仓库导出到分布式存储中,然后再并行处理这些数据,用以进行模型训练和分析。在大规模数据处理场景中,这种不断导出数据的方式显然是不现实的,因为导出 TB 或者 PB 级别的数据通常得花好几个小时甚至几天的时间,既费力又费时。

在过去几年中,在业界产生广泛影响力的机器学习和 AI 模型几乎都是从非结构化数据中获取的。尽管在传统数据仓库中,可以将非结构化数据视为简单的文本或二进制类型 (TEXT、VARCHAR、BLOB),然而通过这种方式训练AI模型效率低下,同样需要从数据仓库中导出数据后再做建模。

因此,企业逐渐选择数据湖这种更加开放的形态来训练 AI 模型。结构化数据和非结构化数据(文本和图像等)直接进入数据湖,以数据湖开放的存储格式存储,如 ORC 和 Parquet,使用开源工具去直接操作数据。传统数据湖平台通常由 Hadoop 实现,因为 Hadoop 的局限性,比如缺乏事务支持,缺乏很好的数据治理方法等等,数据湖都难免形成数据沼泽。

实时数据平台

传统数据平台不仅在 AI 模型的支持上出现了诸多问题,在实时数据处理方面也面临着极大挑战。

传统数据平台的数据处理流程一般是这样的。首先,从业务系统 CRM、ERP 或者其他数据源把这些业务数据收集过来,然后经过离线数据 ETL 对数据进行数据清洗、数据加工。在这个过程中会涉及数据建模和分层,最终会把加工后的数据提供给 BI 工具,或者写到数据库并推到一个在线服务系统,供用户进行访问,这些用户包括用户、运营人员或管理团队等等。

我们可以发现,即便在没有做实时数据处理的情况下,这样的数据处理链路就已经很冗长了。然而,当我们不解决既有离线问题的情况下就向实时转型,问题将更加复杂。

实时数据是如何处理的?

目前主要采用传统 Lambda 和 Kappa 架构。以 Lambda 架构的实现方法为例,Lambda 以传统的离线数仓为主,然后引入了实时数据的处理链路。T+1 数据仍然是走传统离线数仓链路,然后再加上一个实时的数据链路,再把这些实时数据和离线数据汇总到一起,然后再通过一个服务层提供数据服务,对外提供的服务可能是点查询,也可能是做复杂分析。

离线链路用 Hive/Spark,实时用 Flink。但在实际的落地中,如果需要引入实时查询,可能要再加上 ClickHouse/Drill/Presto;如果需要做数据的离线归档,还需要 Hive;为了满足一些高并发点查询需求,还要再引入了 HBase 和 MySQL。引入这么多产品组件,本质原因还是缺少一个在并发、性能和开放性兼顾的产品。

因此 Lambda 架构并没有从源头上解决传统离线数仓的问题,而是在传统离线数仓上加了一条链路,让整个系统变得更加复杂。数据可能会存两份或者存多份,实时链路和离线链路数据也不统一。除此之外,整个架构维护起来是非常复杂的,学习和开发成本比较高。


如何破局?

为了实现用更丰富的数据源训练 AI 模型,我们以极高的代价将数仓的数据导出后再并行处理;为了实现实时数据处理,我们不惜选择冗长的数据处理链路,造成多份数据和多个计算引擎烟囱林立。这些痛点都将我们引向对一个问题的思考:我们能不能只用一份数据,精简计算引擎?

答案是可以的

当下,存储和计算的数据无非是结构化、非结构化和流式数据。破局的第一步,就是在数据的存储方面采用开放格式的一份数据,如 Parquet、ORC、Hudi 等。各个计算引擎都使用开放的数据格式(如 ORC 或 Parquet 等),数据以开放文件格式被写入数据平台,之后就能被多个引擎多次直接读取和使用。

有了存储的开放性,在计算引擎方面,我们就可以尽量优化和减少计算引擎的数量,并针对结构化数据、非结构化数据和流式数据,选用各具优势的计算引擎:● 针对流数据的计算,采用常见的 Flink;● 针对非结构化数据机器学习,可以采用 Spark;● 针对结构化数据,需要兼容开放数据格式,兼顾实时查询、离线分析、高并发和高可用的分析引擎,比如偶数的 OushuDB。

至此,开放格式,一份数据,多个引擎的架构初步形成,这样的“一数多擎”架构形成了可以破局当前企业数据困境的方案——实时湖仓(Realtime Lakehouse)。

“一数多擎”是我们在多个行业的湖仓一体项目落地中不断迭代的最佳实践。企业在选择多个引擎时一定需要基于“化繁为简”和“扬长避短”原则,比如 OushuDB 可以完全实现Hive、Presto、ClickHouse、HBase 等引擎的功能,引入 OushuDB 后就不需要再依赖这些引擎,这样可以极大简化系统开发和运维的复杂度。Flink 擅长流处理,就使用 Flink 做流处理,而不是使用 Flink 来做 SQL 查询,Spark 擅长做机器学习,就使用 Spark 做机器学习,而不是使用 Spark 来做流处理和 SQL 查询。Hive 查询慢,就不必再保留 Hive,可以使用 OushuDB 取代。


开放的“一数多擎”
带来哪些价值?

●首先就是开放本身的价值,开放直接解决了当前数据平台在AI模型训练和实时数据处理过程中多份数据造成的数据冗余和数据不一致。同时,开放的格式让湖仓一体很容易获得最优的 SQL 引擎、ETL、流处理引擎和机器学习引擎的支持。●其次,一份数据整合了非结构化数据和结构化数据存储,图像、文本可以直接用于 AI 模型训练,结构化数据也无需被多次读取、复制和导出。●再次,“一数多擎”必然要求彻底的存算分离架构,让企业湖仓平台不受集群规模的限制,动态扩展集群规模。

● 另外,由于过往实时、离线数据处理链路极其冗长和复杂,造成数据建模、元数据管理、数据治理都难以高效的实施,“一数多擎”精简了不必要的引擎组件,整个架构变得简洁,既为数据建模、数据治理提供了平台基础,又让学习、开发和维护成本都大幅下降。


总结

IDC 调研显示,企业在数字化商业过程中更加关心利用数据和信息来创造自身竞争优势,因此实现底层统一的数据管理是进行上层资产管理和业务决策分析的关键。

以往,由于技术水平的制约和方案的局限性,我们难以实现底层统一的数据管理。因此,为了能用更丰富的数据源训练AI模型,我们以极高的代价将数仓的数据导出;为了实现实时数据处理,我们不惜选择冗长的数据处理链路,造成多份数据和多个计算引擎烟囱林立。

于是才有了我们现在讨论的问题及对应总结出的方案:基于开放的数据格式,存储一份数据,避免数据冗余,有针对性的精选优势引擎组件,通过具备“一数多擎”架构的实时湖仓方案,我们可以同时解决 AI 和实时数据处理在过去所面临的困境,逐步形成完整的企业数智生态。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】命名空间和using namespace std的注意事项

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

分享一下怎么开发一个陪诊小程序

开发一个陪诊小程序需要综合考虑许多方面,包括但不限于市场需求、用户体验、技术实现和运营策略。以下是一篇以开发陪诊小程序为主题的文章。 一、背景介绍 随着社会的发展和人口老龄化的加剧,越来越多的老年人、病患和孕妇需要就医,而由于各…

【分布式】入门级NCCL多机并行实践 - 02

# 背景知识 大模型和分布式训练对数据的吞吐量以及并行度都有很高的要求,NCCL就是在这个背景下诞生的。 如果你是一个只会写写Python,调用PyTorch和Horovod的算法萌新,可能对于分布式底层的东西不太了解,在下岗热潮中被主管逼着…

Java并发面试题:(七)ThreadLocal原理和内存泄漏

ThreadLocal是什么? ThreadLocal是线程本地存储机制,可以将数据缓存在线程内部。ThreadLocal存储的变量在线程内共享的,在线程间又是隔离的。 ThreadLocal实现原理? ThreadLocal的底层是ThreadLocalMap,每个Thread都…

Open3D(C++) 最小二乘拟合平面(拉格朗日乘子法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。 一、算法原理 设拟合出的平面方程为: a x + b y + c

SpringCloud:自定义skywalking链路追踪

一、添加依赖&#xff1a; <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>8.7.0</version></dependency><dependency><groupId>org.apache.sk…

Mac Intellij Idea get/set方法快捷键

Control Retrun(回车键) Command n 参考&#xff1a; Mac Intellij Idea get/set方法快捷键-CSDN博客

Cornerstone for Mac:高效SVN管理的黄金标准

在当今的软件开发领域&#xff0c;版本控制系统是不可或缺的一部分。其中&#xff0c;Subversion&#xff08;SVN&#xff09;是一个广泛使用的版本控制系统&#xff0c;有助于团队协同工作&#xff0c;实现代码的版本管理和追踪。对于Mac用户来说&#xff0c;Cornerstone是一款…

【Linux】进程概念与进程状态

文章目录 一、进程概念1.进程的概念2.进程的描述-PCB 二、进程相关的基本操作1.组织进程2.查看进程3.结束进程4.通过系统调用获取进程标示符5.通过系统调用创建进程-fork初识 三、进程状态1.普遍操作系统层面的进程状态2.Linux操作系统的进程状态 四、两种特殊的进程状态1.僵尸…

C++ 01.学习C++的意义-狄泰软件学院

一些历史 UNIX操作系统诞生之初是用汇编语言编写的随着UNIX系统的发展&#xff0c;汇编语言的开发效率成为瓶颈&#xff0c;所以需要一个新的语言替代汇编语言1971年通过对B语言改良&#xff0c;使其能直接产生机器代码&#xff0c;C语言诞生UNIX使用C语言重写&#xff0c;同时…

Excel文件带有密码的只读模式,如何设置?

Excel带有密码的除了打开密码和工作表保护以外&#xff0c;其实还有一种可以设置密码的方法&#xff0c;今天给大家分享如何设置带有密码的只读模式。 打开excel文件&#xff0c;将文件进行【另存为】设置&#xff0c;然后停留在保存路径的界面中&#xff0c;我们点击下面的工…

《java 桌面软件开发》swing 以鼠标为中心放大缩小移动图片

swing 使用Graphic2D 绘制图片&#xff0c;要实现对图片进行缩放和自由拖动。 1.以鼠标所在的位置为中心&#xff0c;滚轮控制缩放 2.缩放后再支持鼠标拖动。 基本原理&#xff1a; 利用scale() 函数。进行缩放。但是要注意的地方是&#xff0c;如果是在 public void paintCom…

未来装备探索:数字孪生装备

源自&#xff1a;《计算机集成制造系统》 作者&#xff1a;陶飞 张辰源 张贺 程江峰 邹孝付 徐慧 王勇 谢兵兵 “人工智能技术与咨询” 发布 摘 要 工程装备、制造装备、医疗装备等各类装备是加快国家基础建设&#xff0c;提升国家经济实力和保障医疗健康的重要…

2023年【电工(高级)】报名考试及电工(高级)模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年【电工&#xff08;高级&#xff09;】报名考试及电工&#xff08;高级&#xff09;模拟考试题&#xff0c;包含电工&#xff08;高级&#xff09;报名考试答案和解析及电工&#xff08;高级&#xff09;模拟考…

JAVA基础(JAVA SE)学习笔记(六)面向对象编程(基础)

前言 1. 学习视频&#xff1a; 尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第二阶段&#xff1a;Java面向对象编程 6.面向对象编程&#xff08;基础&#xff09; 7.面向对象编程&…

基于水基湍流优化的BP神经网络(分类应用) - 附代码

基于水基湍流优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于水基湍流优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.水基湍流优化BP神经网络3.1 BP神经网络参数设置3.2 水基湍流算法应用 4.测试结果…

【OpenCV实现鼠标绘图,轨迹栏做调色板,图像的基本操作】

文章目录 鼠标绘图轨迹栏做调色板图像的基本操作 鼠标绘图 在OpenCV中操作鼠标事件 函数&#xff1a;cv.setMouseCallback() 目的是在鼠标双击的地方画一个圆。首先&#xff0c;我们需要创建一个鼠标回调函数&#xff0c;该函数会在鼠标事件发生时执行。鼠标事件包括左键按下…

C++QT---QT-day3

#include "widget.h" #include "ui_widget.h" //需要在.pro文件第一行加 texttospeechWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->lineEdit->setPlaceholderText("时:分:秒");//设…

移动端1px-从基本原理到开源解决方案介绍

1px 不够准确&#xff0c;应该说成 1 物理像素 为什么有 1px 这个问题&#xff1f;实现 1px 有哪些方法&#xff1f;这些方法分别有哪些优缺点&#xff1f;开源项目中使用的哪些解决方案&#xff1f;如何在项目中处理 1px 的相关问题&#xff1f; 基本概念 首先&#xff0c;我们…

Nginx Proxy代理

代理原理 反向代理产生的背景&#xff1a; 在计算机世界里&#xff0c;由于单个服务器的处理客户端&#xff08;用户&#xff09;请求能力有一个极限&#xff0c;当用户的接入请求蜂拥而入时&#xff0c;会造成服务器忙不过来的局面&#xff0c;可以使用多个服务器来共同分担成…