单机顶集群的大数据技术来了

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 大数据时代,分布式数仓如MPP成为热门技术,但其高昂的成本让人望而却步。对于多数任务,数据量并未达到PB级,单体数据库即可胜任。然而,由于SQL语法的局限性和计算任务的复杂性,分布式解决方案显得更为必要。esProc SPL作为一种开源轻量级计算引擎,通过高效的算法和存储机制,实现了单机性能超越集群的效果,为低成本、高效能的数据处理提供了新选择。

大数据时代的分布式数仓(如 MPP)是个热门技术,甚至到了提到数据仓库言必称分布式的地步。
但是,分布式数仓真有必要吗?毕竟这些分布式数仓产品都不便宜,无论是采购成本还是运维成本都很高。是不是有低成本轻量级的方案呢?

其实,结构化数据计算任务(数据仓库的主要目标)涉及的数据量通常并不会非常大。比如一个有数千万帐户的银行,一年的交易量也就是数亿条,大概也就是几 G 到几十 G 的规模;有个几百万帐户的电商系统能积累的数据也还是这种规模。即便是少数有巨大数据量的头部企业,也还是会有大量任务只涉及少量数据。单个计算任务的数据规模上百 G 并不多,很难积累到很多大数据厂商宣称的 PB 级。
从另一个方面也可以看出来,大多数分布式数仓的节点数也不是很多,经常在十个左右或更少。个别头部企业的计算中心可能会有数千甚至上万个节点,但单个任务也只会用到其中几个到十几个节点。比如 SnowFlake 销售数量较多的 Medium 型数仓,也只有 4 个节点而已。这才是分布式数仓的主流规模。一个 PB 级数据量的任务,一个节点处理 1T(通常也需要数小时),也需要 1000 个节点,这显然不是常态。

按说单体数据库就能轻松处理几十 G 规模的数据,但实际上并不是,跑批动不动几小时,查询一次几分钟也是家常便饭。于是,用户就会琢磨着上分布式了。
这又是为什么?
这有两方面原因。一方面是这些计算任务的数据量虽然不大,但却有相当的复杂度,经常会涉及多次关联。另一方面是数据库采用的 SQL 语法不能方便地描述这些复杂的运算,勉强写出来的代码不会被数据库优化,导致计算量过大。换句话说,SQL 数据库无法充分利用硬件资源,只能寄希望于分布式扩容。

esProc SPL 可以。
esProc SPL 是开源的轻量级计算引擎,作为纯 Java 开发的程序,可以直接无缝嵌入到 Java 应用中,无须数据库也能获得高性能计算的体验。

esProc SPL 常常能跑出远超 MPP 的性能,单机顶集群。
国家天文台的星体聚类任务,数据规模仅约 5000 万行,某分布式数据库动用 100CPU 跑 500 万行也要 3.8 小时,跑完 5000 万行估算要 15 天(平方级复杂度)。esProc SPL 在 16CPU 单机上跑全量 5000 万数据不到 3 小时。
某银行的贷款业务跑批,HIVE 集群 10 节点,1300 行 SQL 跑 4300 秒;esProc SPL 用 34 行代码在单机上跑 1700 秒。
某银行的反洗钱准备,11 节点的 Vertica 跑出 1.5 小时,esProc SPL 单机 26 秒,竟然把跑批任务跑成了查询!
某电商漏斗运算,SnowFlake 的 Medium 型集群(4 节点)3 分钟跑不出结果,用户放弃。esProc SPL 在单机上 10 秒完成。
某时空碰撞任务,ClickHouse 集群 5 节点 1800 秒,被 esProc SPL 优化成单机 350 秒。
…….
这些实例还可以进一步说明,大量的实际任务的集群节点数并不多,这类场景几乎都可以被 esProc 用单机解决。

esProc SPL 如何做到这一点?
在工程方面,esProc 也采用了压缩、列存、索引以及向量式计算等 MPP 常用的提速技术;更重要的,esProc 没有再基于 SQL,而是采用了自有的程序语言 SPL,其中有不少 SQL 理论基础下无法实现的高性能存储机制和算法类库:

有了这些基础,就容易编写出更低计算复杂度的代码,有效地避免 SQL 代码计算量过大的问题,充分利用硬件资源,做到单机顶集群。
关于 esProc 的性能优势,在 快出数量级的性能是怎样炼成的 有通俗的解释 写着简单跑得又快的数据库语言 SPL 中深入解释为什么 SQL 无法写出高性能代码。
上图中列出了部分 SPL 的高性能技术,可以看到 esProc 也支持集群计算。但由于 esProc 的高性能,在实践任务中都仅用单机就实现原有集群的能力。结果,除了部分为了应对高并发和热备的简单集群场景外,esProc 的集群计算能力一直没有机会被深度历练,甚至一定程度可以说还不够成熟。

看个具体的例子,前述那个时空碰撞问题,总数据量约 250 亿行,SQL 看起来并不算很复杂:

WITH DT AS ( SELECT DISTINCT id, ROUND(tm/900)+1 as tn, loc FROM T WHERE tm<3*86400)
SELECT * FROM (
    SELECT B.id id, COUNT( DISINCT B.tn ) cnt
    FROM DT AS A JOIN DT AS B ON A.loc=B.loc AND A.tn=B.tn
    WHERE A.id=a AND B.id<>a
GROUP BY id )
ORDER BY cnt DESC
LIMIT 20

传统数据库跑得太慢,用户转而求助于 ClickHouse,结果用了 5 节点的集群环境下也跑了 30 分钟多,达不到期望。同样数据量,SPL 代码只用一个节点不到 6 分钟即可完成计算,超出了用户期望。考虑到硬件资源的差距,SPL 相当于比 ClickHouse 快了 25 倍以上。
QQ_1732069277690.png

(SPL 代码写在格子里,这和普通程序语言很不像,参考乾学院 写在格子里的程序语言 )
SQL 中的 DISTINCT 计算会涉及 HASH 和比对,数据量很大时计算量也会很大,然后还有自关联以及进一步的 COUNT(DISTINCT),都会严重拖累性能,而 SPL 可以充分利用 SQL 没有的有序分组和序号定位,有效避免复杂度很高的自关联和 DISTINCT 运算。虽然在存储效率上比 ClickHouse 并没有优势,Java 也会略慢于 C++,但仍然获得了数量级的性能提升。

跑出 300 公里时速不见得总要高铁(分布式 MPP),家用小轿车(esProc SPL) 也可以。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
2月前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
1月前
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
102 2
|
2月前
|
存储 分布式计算 数据可视化
大数据常用技术与工具
【10月更文挑战第16天】
170 4
|
1月前
|
存储 分布式计算 NoSQL
【赵渝强老师】大数据技术的理论基础
本文介绍了大数据平台的核心思想,包括Google的三篇重要论文:Google文件系统(GFS)、MapReduce分布式计算模型和BigTable大表。这些论文奠定了大数据生态圈的技术基础,进而发展出了Hadoop、Spark和Flink等生态系统。文章详细解释了GFS的架构、MapReduce的计算过程以及BigTable的思想和HBase的实现。
|
2月前
|
存储 数据采集 监控
大数据技术:开启智能决策与创新服务的新纪元
【10月更文挑战第5天】大数据技术:开启智能决策与创新服务的新纪元
zdl
|
1月前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
150 56
|
1天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
13 2
|
15天前
|
SQL 运维 大数据
轻量级的大数据处理技术
现代大数据应用架构中,数据中心作为核心,连接数据源与应用,承担着数据处理与服务的重要角色。然而,随着数据量的激增,数据中心面临运维复杂、体系封闭及应用间耦合性高等挑战。为缓解这些问题,一种轻量级的解决方案——esProc SPL应运而生。esProc SPL通过集成性、开放性、高性能、数据路由和敏捷性等特性,有效解决了现有架构的不足,实现了灵活高效的数据处理,特别适用于应用端的前置计算,降低了整体成本和复杂度。
|
23天前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
58 4
|
1月前
|
机器学习/深度学习 存储 大数据
云计算与大数据技术的融合应用
云计算与大数据技术的融合应用