数据架构新篇章:存算一体与存算分离的协同演进

数据架构新篇章:存算一体与存算分离的协同演进

  • 前言
  • 被误解的存算分离
  • 存算一体的概念
    • 存算一体的过往
    • 存算一体的演进
  • 存算分离的定义
    • 存算分离的过往
    • 存算分离的演进
  • 存算一体和分离示例
  • 总结

前言

降本增效大环境下,存算分离架构如火如荼,Why?
首先,先来简单了解两个架构的侧重点:

  • 存算一体是性能敏感型的架构
  • 存算分离是成本敏感型的架构

而大家所谈论的降本增效,是降本在前增效在后,先降本再考虑增效,故而降本才是真实的着重点!
所以,这也是为什么,当下存算分离架构被追捧的主要原因。
以上是从存算一体和存算分离架构结果效应而言,接下来我们从架构本身来聊聊它们之间的故事。

被误解的存算分离

经常会有小伙伴,会发出这么些疑问:
“Hadoop是不是本身就带有存算分离架构的属性,HDFS存储和YARN计算管理分别部署在不同的节点不就是存算分离?”
“湖仓一体,湖作为有界的流批一体存储,仓进行查询加速计算,这是不是也可以理解为存算分离?”

从常规的部署拓扑图而言,Hadoop的HDFS和Yarn分开部署、湖仓存算分工,字面上是存和算分离了,但从存算一体的概念和存算分离的定义而言,并不是!

存算一体的概念

存算一体的过往

[图片]

存算一体的概念形成,最早可以追溯到上个世纪70年代。随着云计算和人工智能应用的发展,计算中心面临着前所未有的数据洪流,数据搬运的速度慢和搬运过程中的高能耗等问题成为计算的主要瓶颈点。
在传统的冯·诺依曼计算架构中,数据需要频繁在存储单元和计算单元之间传输,这不仅导致了巨大的能耗,还造成了计算效率的降低。存算一体技术通过直接利用存储器进行数据处理或计算,将数据存储与计算融合在同一个芯片的同一区域,从而彻底消除了冯·诺依曼架构的瓶颈。特别是在深度学习神经网络这种大数据量和大规模并行的应用场景中,存算一体技术显得尤为适用。
所以,存算一体也通指为"compute-in-memory"或"compute-near-memory",通俗而言就是让存储和计算更贴贴。它主要优势在于能够打破存储墙,消除不必要的数据搬移延迟和功耗,并利用存储单元提升算力,从而成百上千倍地提高计算效率。在特定领域可以提供更大的算力(超过1000TOPS)和更高的能效(超过10-100TOPS/W),将能耗降低至1/10至1/100;使用存储单元参与逻辑计算,从而提升算力,相当于在面积不变的情况下大规模增加计算核心数。

存算一体的演进

回到世纪之初大数据兴起之时,用户数据快速膨胀,对海量数据的分析需求越来越明显,各行各业都在搭建自己的数据仓库和商业智能系统。但传统的Unix主机和高端存储价格高昂,搭建一个用于决策支持的数据仓库系统需要巨额投资。此外,可能耗费巨资搭建的系统在进行海量数据统计汇总时速度非常慢。
经过分析发现,问题的根本在于IO瓶颈。因为计算单元处理数据,但并不存储数据,所有的数据都需要从存储中取出。而存储在取数据时是一个数据块一个数据块地取,无法判断这个块中哪些数据是计算单元需要的。在传统的行存储场景中,一个决策查询可能只需要几个字段,但必须把所有数据都传输到计算单元进行处理和判断,之后再丢弃不需要的数据。这不仅浪费了大量IO,还因为计算单元内存不足,在大表join关联时会产生大量临时数据,这些数据需要在存储中临时存放,造成了进一步的资源浪费。

在这里插入图片描述

为了应对这些挑战,自然催生出新的架构。普遍的原理是在OLTP系统中每次操作都是小数据量,适合移动数据到计算单元;而在OLAP系统中每次都会涉及大量数据处理,适合移动计算到数据单元。这意味着海量数据首先在本地进行初步加工,减少数据量后再参与后续计算,从而节省IO和算力,提高性能。在这个阶段,技术的核心关注点在于减少网络间传输的IO。通过列式存储来支持分析系统中按列统计的习惯,每次查询只需要取需要的列,从而减少无谓的IO。同时,利用各种索引技术加快数据定位和存取的效率,闪存技术的高速发展也进一步提升了系统的性能。
总而言之,存算一体的概念核心是为了解决传统计算架构中的数据搬运瓶颈和存储单元参与逻辑计算低效的问题。通过将存储和计算功能集成在同一芯片上,大幅减少数据在存储和计算单元之间的传输需求,显著降低了能耗并提升了计算效率。在大数据分析和需求不断增长的背景下,基于这种概念,通过减少网络传输和IO操作,优化存储和计算的协同工作,也为大数据架构提供了一种高效的解决方案。

存算分离的定义

存算分离的过往

[图片]

提到存算分离,不得不提一位传奇人物,即Oracle的创始人之一Larry Ellison。自1977年创建SDL并在1982年更名为Oracle以来,Oracle迅速利用小型机的快速发展占据了商用数据库市场的主导地位。直至今日,Oracle仍然在DB-Engine排行榜上名列前茅,数十年未被动摇。
存算分离的概念最早在Unix系统的普及过程中逐渐成型。当时,市场上能够提供Unix主机的企业数量不断增加,除了IBM,还有HP、Compaq和富士通和Sun等公司。这些Unix主机普遍采用了连接独立存储服务器的方式,第一次实现了存储和计算的分离。
在这次存算分离的实现过程中,几项关键技术起到了重要作用,包括成熟的网络组网技术和存储网络技术,当然还有Oracle自身的杀手级技术——缓存融合。通过这些技术,用户可以获得N多好处:

  1. 增强系统的伸缩性:用户可以独立增加数据库服务器来提升处理能力,或者增加存储服务器来扩大数据库容量。
  2. 增强系统的容错性:在存算分离架构下,通过冗余配置可以防止任何一个环节出现单点故障,增强了数据库系统的持续服务能力。
    内存融合技术则是允许两个计算节点共享对方节点的内存数据,从而减少磁盘读取带来的IO负担。缓存融合技术允许不同RAC节点通过高速内网共享各节点数据库实例内部缓存的数据块,直接在节点间传递而无需等待写入磁盘,从而实现高效的协同工作。为了降低远端内存访问时的主机消耗,Oracle还使用了基于RDMA技术的RDS协议,可以直接绕开CPU,实现远程内存的直接读取,进一步提升访问效率。

存算分离的演进

随着公有云的快速发展,按需付费的理念逐步深入人心,用户对大规模数据分析的需求也要求能够按需供给,而传统MPP存算一体的紧耦合架构已经无法满足这种需求。与此同时,网络技术和存储技术的飞速发展,自然而然地催生了新一代的云原生数据库架构——存算分离架构。
以业界最著名的Snowflake公司为例,其创始人Benoit Dageville和Thierry Cruanes曾在Oracle从事数据工程工作多年,后来他们决定在云上创建数仓,联合另一位创始人Marcin Żukowski共同创立了Snowflake。为了更好地利用云上的资源,他们首先将存储和计算再次分离。数据被大量分区地存储在共享的对象存储中,并以列式存储方式保存。中间的计算层通过无状态的虚拟数据仓库来动态拉起和销毁,实现用户不同工作负载的灵活调度和计费。这一设计目前已成为云原生数仓的标准范本。
Snowflake的成功进一步阐明了存算分离的定义和优势。在存算分离架构中,数据存储和计算资源被解耦,从而实现了更高的资源利用率和灵活性。数据被存储在共享存储中,而计算任务可以根据需求动态地启动和销毁。这种方法不仅提高了系统的弹性,还减少了资源的浪费。
结合Snowflake关于存算分离的论文来分析关于存算分离的定义:
[图片]

可以简单总结为两点:

  1. 弹性:需要有足够的弹性支持,分为存储和计算两个维度:
    • 存储:基于对象存储或者公用存储池具备可灵活弹性,可以使用更低成本的对象存储,HDFS 等低成本存储。
    • 计算:弹性的计算资源,并且计算节点是无状态的。例如不同时间点使用不同规模的计算资源服务业务请求,按需使用计算资源,节约成本。
  2. 缓存:主要指的是数据和元数据缓存:
    • 数据缓存:只要是跨节点或跨网络环境进行数据通信交换计算之类的操作,必然需要缓存加速,通常是基于 LRU 策略和 TTL 策略去实现。
    • 元数据缓存:主要是为了提升整体服务的易用可靠性,比如解决对象存储中常见的List(列出对象操作;当对象存储中的文件数量非常多时,执行List操作可能会变得缓慢,因为需要遍历大量的对象以生成列表)和Rename(重命名对象,重操作)问题。

那么,结合以上存储一体的概念和存算分离的定义而言,Hadoop和湖仓架构并不算严格意义上的存算分离,只是存算一体紧耦合的架构。

存算一体和分离示例

以Apache Doris的存算一体和存算分离架构为例:
Doris 的整体架构由两类进程组成:Frontend (FE) 和 Backend (BE)。其中 FE 主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作;BE 主要负责数据存储、查询计划的执行。

  1. 存算一体:在存算一体架构下,BE 节点上存储与计算紧密耦合,数据主要存储在 BE 节点上,多 BE 节点采用 MPP 分布式计算架构。
    存算一体的优点
  • 部署简易:Apache Doris 不需要依赖类似外部共享文件系统或者对象存储,仅依赖物理服务器部署 FE 和 BE 两个进程即可完成集群的搭建,可以从一个节点扩展到数百个节点,同时也增强了系统的稳定性。
  • 性能优异:Apache Doris 执行计算时,计算节点可直接访问本地存储数据,充分利用机器的 IO、减少不必要的网络开销、获得更极致的查询性能。

存算一体的适用场景

  • 简单使用/快速试用 Doris,或在开发和测试环境中使用。
  • 不具备可靠的共享存储,如 HDFS、Ceph、对象存储等。
  • 业务线独立维护 Apache Doris,无专职 DBA 来维护 Doris 集群。
  • 不需极致弹性扩缩容,不需 K8s 容器化,不需运行在公有云或者私有云上。

在这里插入图片描述

  1. 存算分离:BE 节点不再存储主数据,而是将共享存储层作为统一的数据主存储空间。同时,为了应对底层对象存储系统性能不佳和网络传输带来的性能下降,Doris 引入计算节点本地高速缓存。主要角色如下:
  • FE: Doris FE 节点。
  • BE: 无状态化的 Doris BE 节点,BE 上会 Cache 一部分 Tablet 元数据和数据以提高查询性能。
  • Cluster: 无状态的计算资源 (BE 节点) 集合,多个 Cluster 共享一份数据,Cluster 可以随时弹性加减节点。
  • Meta-service: Doris 存算分离元数据服务,主要负责处理导入事务,tablet meta, rowset meta 以及集群资源管理。这是一个可以横向扩展的无状态服务。
  • Foundationdb: 实际存储元数据的分布式事务 kv。

存算分离的优点

  • 弹性的计算资源:不同时间点使用不同规模的计算资源服务业务请求,按需使用计算资源,节约成本。
  • 负载 (完全) 隔离:不同业务之间可在共享数据的基础上隔离计算资源,兼具稳定性和高效率。
  • 低存储成本:可以使用更低成本的对象存储,HDFS 等低成本存储。

存算分离的适用场景

  • 已使用公有云服务。
  • 具备可靠的共享存储系统,比如 HDFS、Ceph、对象存储等。
  • 需要极致的弹性扩缩容,需要 K8S 容器化,需要运行在私有云上。
  • 有专职团队维护整个公司的数据仓库平台。
    [图片]

总结

基于上述的一些对比说明,数据架构中存算一体和存算分离的选择建议:

  1. 如果数据量较小,是不建议走存算分离架构,至少也得几十或百来T的数据规模再考虑存算分离。因为存算分离虽然主打降本,但它的架构实施是相对复杂的,并且相对是更依赖于缓存cache加速提升性能,而cache这块也是需要综合考虑的成本。
  2. 如果本身集群资源管控管控也够用,业务也比较求稳,上线的项目都跑的稳稳当当的,就不建议瞎折腾去跟风上存算分离了。本身存算分离架构实施比存算一体复杂许多,试错成本相对较高,还不如把时间拿去优化优化已有组件和数据建模体系,测试环境测测即可。
  3. 性能高要求,还得是走存算一体。存储分离是在满cache的条件下,性能结果才能和存算一体相对持平。那么如果对性能有较高要求的业务线,不要轻易分离。
  4. 当然,如果公司数据体量本身不小,公司又不卡成本,又有新的业务线可以试错。可以试试激进些上存算分离架构,有一定的结果站台后,再考虑大面积铺盖。

最后,Apache Doris下一个3.0大版本也将在最近推出,目前在走发版流程。主要新特性也是存算分离架构,当前已经有不少Doris用户在测试环境体验中,欢迎大家多多关注!

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【STC89C51单片机】定时器中断系统

中断概念 中断是一种重要的硬件机制,用于在处理器正在执行程序时,能够及时响应某些外部或内部事件。中断可以临时中止当前正在执行的指令序列,转而去执行专门的中断服务程序(ISR,Interrupt Service Routine&#xff0…

Stable Diffusion:解锁AI绘画新纪元的保姆级入门指南

在这个数字艺术日新月异的时代,Stable Diffusion如同一股清新的风,吹散了传统绘画的界限,让每个人都能成为创意无限的数字艺术家。作为一款基于Transformer结构的文本到图像生成模型,Stable Diffusion以其惊人的生成速度、细腻的画…

ubuntu22.04 配置grpc(优化官方教程)

优化了官方教程,2024.7.17顺利打通。 一:添加环境变量 打开root文件夹下的 .bashrc 文件 编辑文件:滚动到文件的底部,然后添加以下行: export MY_INSTALL_DIR$HOME/.local mkdir -p "$MY_INSTALL_DIR" exp…

AMEYA360:思瑞浦推出汽车级理想二极管ORing控制器TPS65R01Q

聚焦高性能模拟芯片和嵌入式处理器的半导体供应商思瑞浦3PEAK(股票代码:688536)发布汽车级理想二极管ORing控制器TPS65R01Q。 TPS65R01Q拥有20mV正向调节功能,降低系统损耗。快速反向关断(Typ:0.39μs),在电池反向和各种汽车电气瞬…

注册安全分析报告:东方航空

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …

base SAS programming学习笔记13(Array)

1.Array array-name{dimension} <elements> array-name&#xff1a;向量名称 dimension&#xff1a;向量长度&#xff0c;默认为1&#xff1b; elements:列出变量名&#xff0c;变量名要么全是数值变量或者全是字符变量 array-name和variable不能相同&#xff1b;也不能和…

人工智能实训室的核心功能有哪些?

随着人工智能技术的飞速发展&#xff0c;其在各行各业的应用日益广泛&#xff0c;对高素质、高技能的人工智能人才需求也随之增加。唯众紧跟市场趋势&#xff0c;致力于建设高标准、高质量的人工智能实训室&#xff0c;以满足职业院校及企业对人工智能技术应用型人才的培养需求…

HarmonyOS NEXT学习——@BuilderParam装饰器

初步理解&#xff0c;相当于VUE的插槽slot Builder function overBuilder() {}Component struct Child {label: string ChildBuilder customBuilder() {}Builder customChangeThisBuilder() {}BuilderParam customBuilderParam: () > void this.customBuilder; // 使用自定…

数据结构(双向链表)

链表的分类 链表的结构⾮常多样&#xff0c;以下情况组合起来就有8种&#xff08;2 x 2 x 2&#xff09;链表结构&#xff1a; 虽然有这么多的链表的结构&#xff0c;但是我们实际中最常⽤还是两种结构&#xff1a;单链表和双向带头循环链表 1.⽆头单向⾮循环链表&#xff1a…

图论(一):速概览无向图有向图图的可视化路径问题

一、图论速概览 研究图的性质和图之间的关系节点和边组成&#xff0c;节点表示对象&#xff0c;边表示对象之间的关系无向图&#xff1a;边没有方向&#xff0c;节点之间的连接是双向的。常用于描述简单的关系&#xff0c;如社交网络中的朋友关系。根据边有无权重分为无权重无…

工业控制:CANOpen(控制器局域网络)协议快速学习

文章目录 背景协议介绍CAN总线协议CANOpen协议介绍CANOpen诞生背景CANOpen的对象字典 CANOpen的服务数据对象&#xff08;SDO&#xff09; 参考附录问题CAN总线竞争原理在CAN协议中&#xff0c;帧中的ID是发送者的ID还是接收者的ID&#xff1f; 背景 目前很多CANOpen介绍的文章…

【操作系统】文件管理——文件存储空间管理(个人笔记)

学习日期&#xff1a;2024.7.17 内容摘要&#xff1a;文件存储空间管理、文件的基本操作 在上一章中&#xff0c;我们学习了文件物理结构的管理&#xff0c;重点学习了操作系统是如何实现逻辑结构到物理结构的映射&#xff0c;这显然是针对已经存储了文件的磁盘块的&#xff0…

简单实用的企业舆情安全解决方案

前言&#xff1a;企业舆情安全重要吗&#xff1f;其实很重要&#xff0c;尤其面对负面新闻&#xff0c;主动处理和应对&#xff0c;可以掌握主动权&#xff0c;避免股价下跌等&#xff0c;那么如何做使用简单实用的企业舆情解决方案呢&#xff1f; 背景 好了&#xff0c;提取词…

【React打卡学习第一天】

React入门 一、简介二、基本使用1.引入相关js库2.babel.js的作用 二、创建虚拟DOM三、JSX&#xff08;JavaScript XML&#xff09;1.本质2.作用3.基本语法规则定义虚拟DOM时&#xff0c;不要写引号。标签中混入JS表达式时要用{}。样式的类名指定不要用class,要用className.内联…

中国贸易外经统计年鉴(2006-2023年)

数据年限&#xff1a;2006-2023年全 数据格式&#xff1a;pdf、excel、caj 数据内容&#xff1a;《中国贸易外经统计年鉴》是一部反映中国国内贸易、对外经济贸易和旅游业发展情况的资料性年刊。收录了 中国国内消费品市场、批发和零售业、住宿和餐饮业、国际收支、对外贸易、利…

Web前端知识视频教程分享

资料下载地址: https://545c.com/f/45573183-1323782723-42d3b2?p7526 (访问密码: 7526)

mysql的索引事务和存储引擎

一、索引 1、索引 索引的概念 &#xff1a;索引是一个排序的列表&#xff0c;在列表当中存储索引的值以及索引值对应数据所在的物理行。 索引的引用&#xff1a; 使用索引之后&#xff0c;就不需要扫描全表来定位某行的数据。 加快数据库的查询速度。 索引可以是表中的一…

智慧园区解决方案PPT(44页)

智慧园区解决方案摘要 一、引言 随着科技的飞速发展&#xff0c;智慧化已成为园区建设与发展的重要趋势。然而&#xff0c;传统园区在智慧化方面仍存在诸多不足&#xff0c;如政企互动便捷化不足、园区治理智能化单一、运营生态化缺失等问题。为此&#xff0c;我们提出了以“…

TI 【ads131m02】DSP TMS320F280049C调试与学习笔记

ads131m02 调试与学习笔记 时序SPI 参考链接&#xff1a; ADS131M02_TI官网资料参考 ADS131M02—英文使用手册 ADS131M0x—参考代码 Example C Code ADS131M02 是一款 two 通道、同步采样、24 位、ΔΣ 模数转换器 (ADC)&#xff0c;具有宽动态范围、低功耗和电能测量特定功能…

二叉树的构造

二叉树的构造&#xff08;前后序用来确定根的位置&#xff0c;中用来划分左右子树 最大二叉树&#xff08;递归要先写终止条件 终止条件 终止条件 每次找最大的结点为分界点以及根节点&#xff0c;左边构成左子树&#xff0c;右边构成右子树&#xff0c;递归 class Solution {…