重塑数据架构:云器Lakehouse如何简化组装式架构实现性能与成本的精益平衡

导读本文将介绍云器科技自研的 Lakehouse 产品。通过本次分享,您将了解云器 Lakehouse 产品特性,了解一体化数据平台如何提升数据处理和数据分析的效率,使之更轻松、更简洁、更高效,了解增量计算如何做到平衡数据新鲜度、查询性能和成本。
本文归纳了三个要点:
1. 利用一体化架构统一离线与实时
2. 利用增量计算,T+1 轻松升级到 T+0
3. 利用 autoMV,秒变优化老司机,性能额外提升 9X
分享嘉宾|王贯扬 云器科技 产品负责人
编辑整理|刘明城
内容校对|李瑶
出品社区|DataFun


01一体化架构统一离线与实时


云器的 Lakehouse 产品是云器自研的云原生企业级数据平台,有如下产品特性:

  • 多云独立,可以完全托管在多云环境中
  • 存算分离、可弹性扩展的计算引擎和存储
  • 具备数据集成、数据开发、数据资产管理、运维监控等功能的数据管理平台
  • 采用增量计算技术,单引擎 Lakehouse 统一批流交互全分析场景

此外,基于数据湖的一体化架构,为目前热门的人工智能大模型提供开放的接口,可以直接使用云器 Lakehouse 的数据湖中数据进行模型训练。

图2:组装式架构和云器 Lakehouse 一体化架构对比


云器一体化平台统一批、流和交互分析,简化数据分析架构。在传统组装式架构(Lambda 架构)下,企业会需要分别建立离线和实时的链路,并处理它们的混合。在这样的链路中,可能涉及多个计算引擎和存储系统,还可能有多种开发语言,有变化需求时,处理会十分繁琐而耗时。例如批处理场景中,通常使用 Hadoop 体系中的 Spark 或 Hive 等离线链路;当需要处理实时性要求较高的数据时,使用 Flink 等实时链路来处理并支持上层应用;而当同时需要历史数据和实时数据时,则需要将这两部分数据混合在一起,数据不一致、指标口径不一致等问题随之出现。为了应对如此复杂的开发环境,云器 Lakehouse 团队选择为客户提供一体化数据平台,使整个数据分析架构变得更加简单。
一体化平台统一了离线、实时链路中的数据存储,不再需要多套系统分别保存数据,从而保持了数据一致性,降低了数据冗余。
此外,云器 Lakehouse 采用存算分离 shared-everything 的架构设计,企业无需关注计算资源的扩容和分配,计算资源可以根据需求进行动态调整,并且按使用量计费,避免了按峰值需求采购计算资源,大幅降低了资源空闲率,节省了计算资源成本。一个引擎(Single-Engine)的另一个好处是,分析师不再需要在不同组件上适应多种 SQL 语法了,大幅降低了开发和运维的技术门槛,数据人员可以专注在数据分析和价值创新上。

图3:电商场景数据加工链路


以某电商场景数据加工为例,图3是基于一体化引擎简化架构的数据加工链路。复杂的场景统一为简洁的标准数仓架构,多样数据源数据写入原始表经过清洗加工等ETL过程,再衍生加工出 ADS 表支持上层应用。
在传统 Lambda 架构中,通常需要两条链路,一条离线加工链路完成原始表的处理,一条实时链路处理增量实时数据。最后,还需要将离线和实时数据加工结果进行汇总计算,最后提供给上层应用。
云器 Lakehouse 开发使用体验会更加简洁,举例来看:
对于同样的电商场景数据加工链路,不再需要分别建设离线加工链路和实时数据处理链路,可在实时写入数据的原始数据表上直接进行数据加工和指标分析处理。
数据加工:使用物化视图替代传统的 table 数据表,即可自动进行增量计算,使这套代码不仅可以处理离线任务,当需要变成实时任务的时候,只需要调整该物化视图的刷新时间,便可自动对距上一次刷新产生的增量数据进行处理。刷新时间的修改范围可从天级别调度到 1 分钟,在 T+1 和分钟级实时数据间灵活变化。

图4:使用物化视图进行数据加工


指标分析:建立指标分析所需的 ADS 表时,也同样使用物化视图嵌套数据加工结果的物化视图实现。开发指标分析逻辑时,全部代码都使用声明式的SQL语句编写,仅需要编写全量数据处理逻辑,结合基于物化视图的增量计算能力即可自动实现增量计算。大大降低了数据指标抽取、汇总和分析的开发难度,实现全链路的统一搭建体验。

图5:声明式全量数据处理 SQL 简化指标分析逻辑


搭建好的数据处理全链路均具备灵活在T+1到T+0范围内随时调整数据实时性的能力。可随时通过调整链路上各处理节点的物化视图刷新时间调整数据时效性。

图6:T+1 天级别调度


以下是基于上述链路生产的数据形成的BI看板。

图8:基于离线+实时一体化链路形成的BI看板


综上,云器 Lakehouse 一体化平台使用增量计算,融合了离线和实时链路,简化架构,提高开发效率,使大数据开发团队能够从容应对复杂场景的业务需求。


02利用增量计算,T+1 轻松升级到 T+0


组装式架构(也称为 Lambda 架构)是目前业界普遍的数据平台架构方式,通过结合使用多种实时、离线等功能组件,以达到支持业务的目的。然而,在实际数据分析和处理中,我们经常陷入"数据不可能三角"的困境:

图9:数据不可能三角


如果我们想提高数据的新鲜度,可能会面临数据存储成本的大幅增加;如果想节省成本,又可能会降低数据查询的性能。而如果我们想预先计算一些结果以提高常用查询的性能,又会影响数据的新鲜度。因此,我们经常需要在数据不可能三角之间进行权衡,找到一个平衡点。而不同时期,对一份数据性能、花费成本、新鲜度的考量又不同。在“数据不可能三角”中频繁权衡、转换是一个让人头疼的问题。

图10:基于下一代增量计算技术灵活调整数据新鲜度


与组装式架构相对的是一体化架构(也称为 Kappa 架构)——云器 Lakehouse 就是采用这样的架构设计,基于下一代增量计算技术,更好地平衡调整数据新鲜度、性能和成本。
什么是增量计算?增量计算类似于在 Lambda 架构中,我们进行的离线计算+实时计算。离线计算的结果就如在增量计算中,t0 时刻得到的存量数据计算结果,而实时计算部分就如增量计算中对 t0 到 t1 时间段数据增量变化 delta 进行同样计算得到的结果。增量计算实质上就是把原本的全量计算拆分为存量数据的计算结果和增量数据的计算结果,复用已有的存量数据计算结果,并对增量数据进行计算和结果合并,来达到节省计算量,提高 query 性能的目的。在云器 Lakehouse 中开发使用增量计算的数据链路,不需要编写增量计算的代码,而是可以使用物化视图来实现这个链路,仅编写全量数据的处理逻辑,就可以自动获得增量计算的能力。
增量计算并不是一个新的概念,Spark streaming 等产品也有采用,但云器 Lakehouse 的增量计算更“聪明”一些。在实际业务场景中,增量计算并不是时刻都优于全量计算的。比如在数据总量不大,但频繁变动的情况下,如果坚持所有计算都使用增量计算的逻辑,可能还不如全量计算更为高效。云器 Lakehouse 的增量计算更善于帮助用户“精打细算”。在云器 Lakehouse 中,每一次使用增量计算前,都会对增量计算所消耗的计算资源和可能带来的收益进行预估,并与全量计算进行成本和收益的对比,从而选择最为经济的方式。在这个机制下,开发人员可放心调整数据的增量刷新时间,而把方案选择、成本优化的工作交给平台自动分析。

图11:基于增量计算改造后的电商数据加工链路


上图就是基于增量计算对前文电商数据加工链路改造后的结果。从原始表到明细表、聚合表的更新均通过增量物化视图,自动应用增量计算。当调整不同的数据新鲜度和刷新时间时,能够平滑地进行迁移和变化。


03利用 autoMV,秒变优化老司机,性能额外提升 9X

图12:大量业务查询中往往存在可复用的结果


AutoMV(自动的物化视图),用AI和自动化的方式解决查询性能优化问题。
在实际应用中,我们经常会遇到业务人员对数据查询速度慢的抱怨。面对这种情况,我们只有:扩容、忍受、优化,三种选择。前两种选择并非理想之选,第三种选择可以通过优化重复或相似请求,缓存结果数据来实现。
有没有一种可能,将大量请求中重复的部分提取出来,创建成物化视图,然后将原始的 SQL 查询重写为使用这些物化视图保存的预计算结果,从而提高整体查询性能。可以,但是,这种优化是建立在对业务查询请求和底层数据都非常数据,有经验的数据开发人员花费大量时间进行分析和测试后才可完成的。通常我们在应接不暇的业务需求中,很难长时间专注于上述优化工作,此外,作业的需求也在不断变化,优化的效果也可能很快就会被稀释。
为了解决查询性能问题,我们在平台上为开发人员提供一项名为"自动物化视图(autoMV)"的技术,它可以自动创建一系列物化视图来优化指定范围内查询作业的性能。
下面通过一个模拟大规模数据查询作业的计算来展示 auto MV 的查询优化效果。
 

07:55


我们以 SSB 1G 的数据和查询为基准,第一次运行时关闭结果缓存和 MV 的重写,SSB 总运行时间为 16 秒多,QPS 为 0.770。而第二次运行时,仍关闭结果缓存但打开 autoMV,应用自动生成的 MV 进行 SQL 重写。经 autoMV 重写后,SSB 运行时间缩短到 2 秒多,每秒查询数提升到 6.253。从中可以看出 autoMV 可以自动完成对大量 SQL 的优化工作,优化效果显著。
我们再将这两次作业的所有 query 进行比较。在并发执行的 SSB 基准测试中,为应用 autoMV 的总耗时为 2.69 分钟。而在应用 auto MV 重写后,总耗时缩短至约 17 秒,性能提升 9.08 倍,CPU 使用时间减少 10.03 倍。

图14:auto MV 查询优化效果


在应用 autoMV 过程中,所有的 MV 操作都是后端自动处理的,对于用户而言是无感知的。此外,并非所有的 MV 都是划算的,有些 MV 的创建收益高且应用频率也高,而另一些则不划算。因此,autoMV 会放弃不划算的 MV,只选择那些能够带来显著收益的 MV,并自动创建在我们的数据仓库中。在应用 autoMV 时,全程无需手动干预,云器 Lakehouse 内置的 AI 模型可以帮助我们完成预评估 MV、创建 MV 和 query 重写等所有优化操作。
回顾本次分享的内容,首先介绍了云器 Lakehouse 使用离线实时一体化架构来简化架构,接着分享了如何使用增量计算来平衡数据的不可能三角,最后是应用 autoMV 来简化查询优化的工作,让业务人员获得更好的查询体验。


04问答环节


Q1:物化视图的方式,数据查询和计算效率怎么样。数据刷新一次的时长大概多少?
A1:基于增量计算,我们的物化视图的查询刷新效率可以达到分钟级。


Q2:查询引擎是基于什么做的?还是纯自研?
A2:查询引擎是自研的,我们有一群非常优秀的小伙伴专注于运行和优化计算,以不断提升性能。


Q3:物化视图(mv)自动创建,会自动删除吗?每个查询(query)最多生成多少物化视图(mv),如果生成太多元数据,系统会不会有压力?
A3:物化视图会根据自身的价值和生命周期进行评价,当价值不高时会自动删除以节省存储空间。每个查询生成的物化视图的数量取决于整个集群中值得创建的视图数量,这是通过对元数据进行管理和优化来保证弹性扩展的。


Q4:调度配置周期最低的频次是多少?分钟?秒?
A4:在调度配置上,最低频次是一分钟,分钟级的调度。


Q5:能详细讲下删除数据和修改是怎么在增量计算时实现的?
A5:云器提供了数据集成服务 Ingestion server,可以通过监控 binlog 流和 Kafka 消息等,进行原始数据写入。数据的写入支持 update 和 delete。在增量计算时,支持对 update 和 delete 的数据进行增量计算,并具备算法优化这类场景下增量计算的效率。


Q6:整个集群数据量大约什么规模?
A6:主要看愿意放多少规模,多少规模都是可以承载的。云器 Lakehouse 本身是基于云原生的存算分离架构,理论上计算集群和底层的存储资源都可以无限扩展。


Q7:存储必须使用对象存储的吗?可以部署在客户 hadoop 集群上吗?
A7:目前我们必须基于对象存储,因为对象存储也是目前云上性价比和可靠性综合最高的存储产品。我们也会针对性做性能优化来弥补对象存储在查询性能上的不足。


Q8:hologres 也有物化视图,不过仅支持上游表 appendonly,lakehouse 也是仅支持 appendonly 还是非 appendonly 也可以?
A8:不仅支持 appendonly,还支持物化视图和增量计算的 update 和 delete。

云器Lakehouse作为面向企业的全托管一体化数据平台,只需注册账户即可管理和分析数据,无需关心复杂的平台维护和管理问题。新一代增量计算引擎实现了批处理、流计算和交互式分析的统一,适用于多种云计算环境,帮助企业简化数据架构,消除数据冗余。

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

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

相关文章

DE2-115串口通信

目录 一、 内容概要二、 Hello Nios-II2.1 Nios-II编程2.1.1 硬件Ⅰ 搭建环境Ⅱ 编写代码 2.1.2 软件2.1.3 烧录Ⅰ硬件Ⅱ 软件 2.2 verilog编程 三、 心得体会 一、 内容概要 分别用Verilog和Nios软件编程, 实现DE2-115开发板串口输出“Hello Nios-II”字符到笔记本电脑串口助…

【Shell】shell编程之循环语句

目录 1.for循环 例题 2.while循环 例题 3.until循环 1.for循环 读取不同的变量值,用来逐个执行同一组命令 for 变量 in 取值列表 do 命令序列 done [rootlocalhost ~]# for i in 1 2 3 > do > echo "第 $i 次跳舞" > done 第 1 次跳舞 第 …

使用Pycharm编写Python程序时对基本类结构中方法的重写的两种初步操作方式

使用Pycharm编写Python程序时对基本类结构中方法的重写的两种初步操作方式 Python和其他一些高级面向对象的编程语言中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改&…

闲来装个虚拟机Ubuntu24.04和硬盘分区及挂载

简述 最近ubuntu出新版本了,ubuntu24.04, 俗称高贵食蚁兽。5年前进行Android或者linux开发基本是在windows下的虚拟机中进行。目前,虽然物质基础提高了,功能有独立进行编译、代码管理的服务器了。可以通过ssh登录,但是…

【C++11】C++11类与模板语法的完善

目录 一,新的类功能 1-1,默认成员函数 1-2,强制生成关键字 二,可变参数模板 2-1,模板参数包 2-2,STL容器empalce的相关接口 一,新的类功能 1-1,默认成员函数 C11之前的类中有…

Tomcat添加服务以及设置开机自启

下载地址连接 Index of /dist/tomcat👓 注意点:不要出现中文路径 #环境变量 CATALINA_HOMED:\apache-tomcat-7.0.62 TOMCAT_HOMED:\apache-tomcat-7.0.62 JAVA_HOMED:\tool\jdk1.8.0_111 PATH%CATALINA_HOME%\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\…

对称加密介绍

一、什么是对称加密 对称密钥算法(Symmetric-key algorithm),又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。 对称加密的特点是,在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。 这…

超越传统游戏:生成式人工智能对游戏的变革性影响

人工智能(AI)在游戏中的应用 游戏产业是一个充满活力、不断发展的领域,人工智能(AI)的融入对其产生了重大影响。这一技术进步彻底改变了游戏的开发、玩法和体验方式。本文分析的重点是传统人工智能和生成式人工智能在游…

网络安全之弱口令与命令爆破(下篇)(技术进阶)

目录 一,什么是弱口令? 二,为什么会产生弱口令呢? 三,字典的生成 四,九头蛇(hydra)弱口令爆破工具 1,破解ssh登录密码 2,破解windows登录密码 3&#xf…

java项目之相亲网站的设计与实现源码(springboot+mysql+vue)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的相亲网站的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 相亲网站的设计与实…

Excel办公技巧之下拉菜单

在日常办工中,经常需在单元格中输入特定的值,此时我们可以使用下拉菜单解决,输入错误和错误值,可以一劳永逸的解决固定数据输入问题。 使用Excel下拉菜单时,它在数据输入和验证方面发挥着重要作用通过点击单元格的下拉…

权限及权限操作

1.命令行解释器 Linux将命令行解释器称为外壳程序shell 命令行解释器的作用就是将用户输入的指令转换为操作系统能够直接执行的指令。同时将操作系统的反馈转换为用户能看懂的反馈,解决了用户和操作系统沟通成本的问题。与此同时,命令行解释器还能够拦…

乡村旅游指标-最美乡村数、旅游示范县数、旅行社数、景区数、农家乐数(2007-2021年)

01、数据介绍 乡村旅游也是促进乡村经济发展的有效途径。通过发展乡村旅游,可以带动乡村相关产业的发展,提高乡村居民的收入,促进乡村的经济发展和社会进步。此外,乡村旅游还能促进城乡交流,推动城乡统筹发展。 数据…

rt-thread 挂载romfs与ramfs

参考: https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/qemu-network/filesystems/filesystems?id%e4%bd%bf%e7%94%a8-romfs https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutor…

香港虚拟主机哪里可以试用?用于企业建站的

香港虚拟主机适合个人、企业建站,包括外贸企业网站、个人博客网站、中小企业官网等,那么作为新手不知道哪家香港虚拟主机好用的时候,该如何找到可以试用的香港虚拟主机呢? 香港虚拟主机也称作香港空间、香港虚拟空间,…

DS:时间复杂度和空间复杂度

欢迎各位来到 Harper.Lee 的学习世界! 博主主页传送门:Harper.Lee的博客主页 想要一起进步的uu欢迎来后台找我哦! 本片博客主要介绍的是数据结构中关于算法的时间复杂度和空间复杂度的概念。 一、算法 1.1 什么是算法? 算法(Alg…

QT--2

Qt界面设计 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口相关设置this->resize(680,520);this->setFixedSize(680,520);this->setWindowTitle("Tim");this->setWindowFla…

Linux进程控制——Linux进程终止

前言:前面了解完前面的Linux进程基础概念后,我们算是解决了Linux进程中的一大麻烦,现在我们准备更深入的了解Linux进程——Linux进程控制! 我们主要介绍的Linux进程控制内容包括:进程终止,进程等待与替换&a…

【机器学习数据可视化-04】Pyecharts数据可视化宝典

一、引言 在大数据和信息爆炸的时代,数据可视化成为了信息传递和展示的关键手段。通过直观的图表和图形,我们能够更好地理解数据,挖掘其背后的信息。Pyecharts,作为一款基于Python的数据可视化库,凭借其丰富的图表类型…

数据结构-二叉树-红黑树

一、红黑树的概念 红黑树是一种二叉搜索树,但在每个节点上增加一个存储位表示节点的颜色,可以是Red或者BLACK,通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,…