首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SuperSQL:跨数据源、跨DC、跨执行引擎的高性能大数据SQL中间件

SuperSQL:跨数据源、跨DC、跨执行引擎的高性能大数据SQL中间件

作者头像
腾讯技术工程官方号
发布于 2019-09-24 02:40:05
发布于 2019-09-24 02:40:05
9K1
举报

导语:SuperSQL是腾讯数据平台部自研的跨数据源、跨数据中心、跨执行引擎的统一大数据SQL分析平台/中间件,支持对接适配多类外部开源SQL执行引擎,如SparkHive等。

背景

SuperSQL是一款自研的跨数据源、跨数据中心、跨执行引擎的高性能大数据SQL中间件,满足对位于不同数据中心的不同类型数据源的数据联合分析/即时查询的需求。SuperSQL的目标是成为公司内部统一的SQL分析中间件,实现以下三点的价值:

  • 解决业务数据孤岛,最大化数据的使用价值
  • 执行引擎最优选择,提升业务使用数据效率
  • 优化集群资源使用,解决业务资源使用瓶颈

SuperSQL基于Apache社区Calcite[1]动态数据管理框架构建,并围绕上述目标对Calcite Parser/Planner/MetaStore等组件做了大量的定制、扩展和优化。SuperSql的主要特性包括:

  • 跨数据源查询:支持通过JDBC对接MySQLPostgreSQL、TBase、Hive (ThritServer)、SparkSQL、H2、Oracle、Phoenix (HBase)、ElasticSearch等数据源,且支持对接同一类数据源的不同版本(如Hive 2.3.3与Hive 3.1.1);
  • SQL算子下推:支持常用SQL操作下推数据源执行,具体包括Project、Filter、Aggregate、Join、Sort、Union、Intersect、Except、Limit、Offset、UDF和Nested Query;
  • SQL引擎CBO(基于代价优化):基于Volcano模型,选择最优的查询执行物理计划;
  • 跨数据中心CBO:将集群负载、网络带宽等因子纳入代价估算,选择最优的跨数据中心执行计划,拆分子查询到不同DC的多个计算引擎执行;
  • 最优计算引擎选择:支持对接多种不同类型的分布式计算引擎 (如Spark, Hive, Flink, Presto),支持为每个SQL智能挑选最优的执行引擎;
  • 标准SQL语法:支持SQL 2003、Oracle12和MySQL5语法。

SuperSQL的主要应用场景包括:

  • OLAP数据分析 - 通过SuperSQL对数据分析/挖掘、生成报表等
  • 数据即时查询 - 通过SuperSQL对数据采样、小数据交互式查询等
  • 数据联邦查询 - 通过SuperSQL联合分析不同数据源(例如Hive、HBase)中的数据
  • 割裂的数据版本 - 通过SuperSQL查询不同集群中部署的不同数据源版本中的数据
  • 跨数据中心查询 - 通过SuperSQL查询多个数据中心中的数据

性能优势:TPC-DS基准评测

目前我们评估了在1GB和100GB的TPC-DS性能测试基准数据集之上,SuperSQL V0.1版本与社区SparkSQL JDBC基线相比,在Hive和PG数据源上执行99条TPC-DS SQL查询的响应时间。

测试环境

软硬件参数

SuperSQL V0.1版本当前作为组件之一随TBDS套件对外发布。本测试使用的系统版本是TLinux 2.2 64bit Version 2.2 20190320;使用的Hive和PG数据源、Spark计算引擎等SuperSQL系统模块均为套件中自带的其它组件,参数具体如下所示。

测试结果分析

总体情况

上表给出了性能测试的详细结果,其中字段的含义说明如下:

  • 重复次数:代表了TPC-DS 99条SQL每条被执行的次数;如果大于1,结果取多次测量的平均值;
  • 对比组数:针对SuperSQL和Spark JDBC进行对比,只要有一方能成功执行SQL得到结果,即产生对比;
  • 有效对比组数:和对比组数的区别在于,只有SuperSQL和Spark JDBC双方均能拿到测试结果,才产生对比;
  • 更快方式:对比SuperSQL和Spark JDBC的99条SQL的平均时间,耗时短的更快;
  • 性能提升:Spark JDBC的平均执行时间除以SuperSQL的平均执行时间,表示SuperSQL相比Spark基线查询响应时间降低的倍数;
  • 成功组数:能够拿到测试结果的query数目;
  • 总时间:有效对比组数的总时间,只有双方都拿到测试结果,才会将这个时间计入;
  • 平均时间:有效对比组数的平均时间。

1GB查询时间分析

耗时分布对比

上图展示了在1GB数据规模下,SuperSQL和Spark JDBC针对所有99条TPC-DS SQL(部分SQL带分号拆分为两条串行执行,实际为103条)执行时间的对比情况。通过参数优化等方式解决测试中发现的少量SuperSQL查询执行缓慢问题,目前100%TPC-DS测试用例SQL在SuperSql的执行时间可实现远低于或持平Spark JDBC。测试中,我们认为相差10%以内的响应时间结果数据为等价。

图中横轴代表了SuperSQL某条SQL的查询时间除以对应Spark JDBC该SQL的查询时间,然后按照<50%和50%~100%条目分组,分别代表SuperSQL时间是Spark时间的0.5倍以内和1倍以内。纵轴代表了两个条目每个各自包含的SQL数目。例如,从图中我们可以看到Hive作为数据源时,有45条(占比43.69%)SQL 的SuperSQL查询时间在Spark JDBC的50%以下,PG数据源时这个数目为84条(占比81.55%),Hive+PG时为40条(占比38.83%)。

由于1GB的数据规模实在太小,每条query的执行时间都很短,将时间比值作为性能评价依据存在一定的局限性,因此在100GB的结果分析中中,这种现象将会被更加详细的分析。

平均耗时对比

上图显示了SuperSQL和Spark JDBC在不同数据源下的平均执行时间对比情况。Hive作为数据源时,SuperSQL执行一条TPC-DS SQL的平均时间为11.66s,而Spark JDBC为21.68s,性能上SuperSQL较Spark JDBC提升了约86%;PG作为数据源时,性能提升约60%;Hive + PG跨源时,SuperSQL性能提升约83%。

整体而言,在测试数据集规模比较小1GB时,SuperSQL整体较Spark JDBC可匹配或快不到一倍,但是由于整体平均查询时间仅在十几秒左右,计算耗时的比重较小,SuperSQL的性能提升优势并不是很明显,当数据规模增大时这一情况将会完全改观。

100GB查询时间分析

耗时分布对比

上图展示了在103条TPC-DS查询中,SuperSQL和Spark JDBC查询时间的对比情况。将每条查询的SuperSQL执行时间除以Spark JDBC执行时间,按照20%以下、20%~50%和50%~100% 3个区间段进行区分。横轴代表了不同数据源时上述各分组,纵轴代表的是各分组的数目。从图中我们可以观察到,在Hive单源下,有101条(98.1%)SQL的SuperSQL查询时间只占到Spark JDBC查询时间的20%以下;在100GB Hive+PG的混合源下,有88条(85.4%)SQL的SuperSQL的查询时间只占到Spark JDBC查询时间的20%以下。

需要说明的是,在100GB Hive + PG的组别中,Spark JDBC有46组查询过程中抛出异常,没有返回结果,但是SuperSQL则不会出现类似的情况。针对这种情况,上图的表述为:Spark JDBC的异常组别(无结果)作为时间比值<20%处理,实际上这种处理合乎常理,因为Spark JDBC的异常查询组别显得艰难无比,往往需要40min以上才给出报错,这种反应完全可以当作Spark JDBC的查询时间在40min以上,也有可能更长,而SuperSQL往往在400s以内就能够返回结果,所以上述处理是合理的。这也反映了SuperSQL在相同参数配置的情况下,比Spark JDBC应对复杂query的处理能力整体更加优异,对原SQL的优化和处理是卓有成效的。

平均耗时对比

上图给出了SuperSQL以及Spark JDBC所有查询平均时间的对比。可以看到,在Hive数据源下,SuperSQL执行TPC-DS SQL的平均执行时间仅为1.15min,而Spark JDBC则需要31.27min,SuperSQL较Spark JDBC性能提升了约26倍。在Hive + PG跨源的情况下,SuperSQL执行TPC-DS SQL的平均时间为4.63min,而Spark JDBC需要25.7min,性能提升约4.5倍。相比于1GB数据规模,100GB数据规模时SuperSQL的查询优势更加明显,这也与事实相符:在数据规模更加大时,计算耗时的比重更加大,总体耗时更能反映出查询过程的性能优劣。

有一点需要注意的是,从结果上看居然发现Spark JDBC跨源时的平均查询时间反而比单源更快,事实上,正如上一小节所述,Hive + PG作为跨源数据源时,Spark JDBC有将近一半(46条)query 查询失败,而在计算平均时间时这些组别是无法进行统计的,所以在能够执行的query范围内,Spark JDBC的跨源平均查询时间才比单源快,因此这个只是偶发现象,对整体而言是不准确的结论。正是因为Spark JDBC存在诸多异常组别(无结果),平均时间的对比并不能完全反应SuperSQL的性能优势,若是Spark JDBC有更多的组别不会因为资源限制拿不到结果,预计SuperSQL在数值上的性能提升将会更加可观。

测试结果总结

SuperSQL 性能测试结果汇总如下表所示,SuperSql在海量数据下相比社区基线(Spark JDBC)性能优势明显

  1. TPC-DS 100GB基准测试集,98%的Hive和86%的Hive + PG查询,SuperSQL执行时间不到Spark JDBC时间的20%
  2. TPC-DS 1GB基准测试集, 44%的Hive、82%的PG和39%的Hive + PG查询,SuperSQL执行时间不到Spark JDBC时间的50%

SuperSQL作为公司自研的跨DC多数据源的数据分析平台,不管是单源还跨源的情况下都比开源Spark JDBC有着极为突出的性能优势,且在应对复杂查询时对资源的要求远比Spark要低,具有更好的鲁棒性。SuperSQL性能测试后续将持续进行并获取新的结果,同时在后续版本中针对性能测试发现的问题持续优化,进一步提升SuperSQL的可用性与稳定性。

未来规划

现在的SuperSQL即将融合现网落地,但仍有很多特性需要完善和改进,之后的主要方向包括:

  • 兼容存量业务和数据:兼容各个BG存量的业务和数据,这包括不同的数据版本、不同的业务类型等;
  • 高效统计信息采集:统计信息(CBO Stats)是代价估算的基础 ,高效的Stats采集是SQL引擎必不可少的一部分,包括支持基于并发采样与增量更新的采集机制、兼容对接第三方Stats接口或仓库,基于历史查询负载的智能自动采集,等等;
  • 基于多代价因子的优化:扩展优化Calcite的VolcanoPlanner CBO模型,支持包括:规则集切分优化、单DC CBO网络代价与字节数估算扩展、多计算引擎的跨DC分布式查询执行、下推并发子查询切分,等等;
  • 最优执行引擎的智能选择:不同的SQL可能适合于不同类型的计算引擎(Hive,Spark,Flink,Presto等)来执行,目前路由基于简单的规则和启发性代价,未来要开发一套智能规则,根据每个SQL的特征选择其最适合的引擎来执行。

参考

[1] Calcite: https://calcite.apache.org/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯技术工程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
数据源之间存在数据迁移吗?还是类似presto,跨平台查询的时候最终在上层的计算框架进行执行?
数据源之间存在数据迁移吗?还是类似presto,跨平台查询的时候最终在上层的计算框架进行执行?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
一站式数据智能平台哪家强?腾讯云TCHouse-X深度解析
gavin1024
2025/08/22
950
云原生数智平台怎么选?腾讯云TCHouse-X全维度拆解
gavin1024
2025/08/22
940
腾讯大数据|天穹SuperSQL执行核心剖析
1. 数据孤岛:由于历史原因以及不同数据中心的业务差异性,众多异构数据源形成了数据孤岛,导致大量且繁重的人工数据搬迁。与此同时,由于不同国家的数据安全法限制,很多数据无法搬迁,数据安全和查询效率都难以保证
腾讯大数据
2024/04/28
2K0
腾讯大数据|天穹SuperSQL执行核心剖析
天穹SuperSQL:腾讯下一代大数据自适应计算引擎
导语 SuperSQL是腾讯自研的下一代大数据自适应计算平台。通过开放融合的架构,实现一套代码高效解决公有云、私有云、内网的任何大数据计算场景问题。我们通过将异构计算引擎/异构存储服务、计算引擎的智能化/自动化、SQL的流批一体、算力感知的智能调度纳入内部系统闭环,给用户提供极简统一的大数据计算体验。用户能够从繁杂的底层技术细节中解脱出来,专注于业务逻辑的实现,像使用“数据库”一样使用“大数据”,实现业务逻辑与底层大数据技术的解耦。 SuperSQL作为腾讯大数据智能计算平台的入口和决策中心,整合不同的大数
腾讯大数据
2022/08/26
5.6K0
天穹SuperSQL:腾讯下一代大数据自适应计算引擎
智能计算时代 | SuperSQL基于监督学习模型的自适应计算提效能力
点击蓝字 关注我们更多咨询 天穹SuperSQL是腾讯自研、基于统一SQL语言模型、面向机器学习智能调优、提供虚拟化数据和开放式计算引擎的大数据智能融合平台。在开放融合的Data Cloud上,业务方可以消费完整的数据生命周期(采集-存储-计算-分析-洞察),还能够满足位于不同数据中心、不同类型数据源的数据联合分析/即时查询的需求。 目前,SuperSQL已经迈入智能计算时代,SuperSQL能够基于规则匹配(RBO)与代价估算(CBO),利用不同算法智能地为不同用户SQL挑选最合适的执行引擎,极大地优化S
腾讯大数据
2022/03/03
1.3K0
《你问我答》第四期 | 进一步讲解SuperSQL、Oceanus以及Tbase
各位小伙伴们大家好,我们又见面啦~ 这里是《你问我答》栏目第四期 上周推送了一篇关于腾讯SuperSQL的文章 《「解耦」方能「专注」——腾讯天穹SuperSQL跨引擎计算揭秘》 很多同学对这个项目产生了浓厚的兴趣 本期,我们的专家老师将现身说法 进一步为大家介绍腾讯大数据SQL引擎天穹SuperSQL的性能表现 同时,也会解答小伙伴们关于 腾讯一站式实时计算平台Oceanus 以及分布式 HTAP 数据库管理系统Tbase 的部分疑问 对这些话题感兴趣的同学就快来看看吧! 01 @旧故里草木深:
腾讯大数据
2020/06/22
1.3K0
「解耦」方能「专注」——腾讯天穹SuperSQL跨引擎计算揭秘
导语:得益于调度单元是通用的SQL语句,SuperSQL能够做到与特定计算引擎解耦,也正因为此原因,SuperSQL只需专注在最优执行计划生成,并根据SQL具体类型选择最佳的计算引擎。 天穹SuperSQL是腾讯自研的跨数据源、跨数据中心、跨计算引擎的大数据SQL引擎,能够满足位于不同数据中心、不同类型数据源的数据联合分析/即时查询的需求。在腾讯整个天穹大数据图谱中,负责连接端与存储。 数据源无论是关系型数据库、NoSQL还是大数据系统;数据存储无论是跨集群还是跨数据中心;数据计算无论是报表生成、分析挖掘
腾讯大数据
2020/06/16
3.3K0
如何编译及使用TPC-DS生成测试数据
TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张纬度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。本篇文章主要介绍如何编译及使用TPC-DS生成测试数据。
Fayson
2018/03/30
10.8K1
ByConity与主流开源OLAP引擎(Clickhouse、Doris、Presto)性能对比分析
随着数据量和数据复杂性的不断增加,越来越多的企业开始使用 OLAP(联机分析处理)引擎来处理大规模数据并提供即时分析结果。在选择 OLAP 引擎时,性能是一个非常重要的因素。因此,本文将使用 TPC-DS 基准测试的 99 个查询语句来对比开源的 ClickHouse、Doris、Presto 以及 ByConity 这 4 个 OLAP 引擎的性能表现,以便为企业选择合适的 OLAP 引擎提供参考。
深度学习与Python
2023/08/08
9660
ByConity与主流开源OLAP引擎(Clickhouse、Doris、Presto)性能对比分析
两种列式存储格式:Parquet和ORC
随着大数据时代的到来,越来越多的数据流向了Hadoop生态圈,同时对于能够快速的从TB甚至PB级别的数据中获取有价值的数据对于一个产品和公司来说更加重要,在Hadoop生态圈的快速发展过程中,涌现了一批开源的数据分析引擎,例如Hive、Spark SQL、Impala、Presto等,同时也产生了多个高性能的列式存储格式,例如RCFile、ORC、Parquet等,本文主要从实现的角度上对比分析ORC和Parquet两种典型的列存格式,并对它们做了相应的对比测试。
不吃西红柿
2022/07/29
7.7K0
两种列式存储格式:Parquet和ORC
腾讯 PB 级大数据计算如何做到秒级?
天穹 SuperSQL 是腾讯自研,基于统一的 SQL 语言模型,面向机器学习智能调优,提供虚拟化数据和开放式计算引擎的大数据智能融合平台。在开放融合的 Data Cloud 上,业务方可以消费完整的数据生命周期,从采集-存储-计算-分析-洞察。还能够满足位于不同数据中心、不同类型数据源的数据联合分析/即时查询的需求。 Presto 在腾讯天穹 SuperSQL 大数据生态中,定位为实现秒级大数据计算的核心服务。主要面向即席查询、交互式分析等用户场景。Presto 服务了腾讯内部的不同业务场景,包括微信支
腾讯技术工程官方号
2022/01/21
1.8K1
Inceptor5.1-批处理分析数据库的进阶
Transwarp Inceptor是针对于批量处理及分析的数据库,被广泛应用于数据仓库和数据集市的构建。Inceptor基于Hadoop和Spark技术平台打造,加上自主开发的创新功能组件,有效解决了企业级大数据数据处理和分析的各种技术难题,帮助企业快速构建和推广数据业务。 这是Inceptor 5.1的架构图,与5.0版本相比,其中有两个模块发生了明显变化。一个是分步执行引擎中增加了向量化执行引擎Windrunner,另一处是在分布式列存中将Holodesk构建于新引入的存储架构Shiva。 除了功
企鹅号小编
2018/02/28
2K0
Inceptor5.1-批处理分析数据库的进阶
HAWQ技术解析(一) —— HAWQ简介
一、SQL on Hadoop 过去五年里,许多企业已慢慢开始接受Hadoop生态系统,将它用作其大数据分析堆栈的核心组件。尽管Hadoop生态系统的MapReduce组件是一个强大的典范,但随着时间的推移,MapReduce自身并不是连接存储在Hadoop生态系统中的数据的最简单途径,企业需要一种更简单的方式来连接要查询、分析、甚至要执行深度数据分析的数据,以便发掘存储在Hadoop中的所有数据的真正价值。SQL在帮助各类用户发掘数据的商业价值领域具有很长历史。 Hadoop上的SQL支持一开始是Apache Hive,一种类似于SQL的查询引擎,它将有限的SQL方言编译到MapReduce中。Hive对MapReduce的完全依赖会导致查询的很大延迟,其主要适用场景是批处理模式。另外,尽管Hive对于SQL的支持是好的开端,但对SQL的有限支持意味着精通SQL的用户忙于企业级使用案例时,将遇到严重的限制。它还暗示着庞大的基于标准SQL的工具生态系统无法利用Hive。值得庆幸的是,在为SQL on Hadoop提供更好的解决方案方面已取得长足进展。 1. 对一流的SQL on Hadoop方案应有什么期待 下表显示了一流的SQL on Hadoop所需要的功能以及企业如何可以将这些功能转变为商业利润。从传统上意义上说,这些功能中的大部分在分析数据仓库都能找到。
用户1148526
2019/05/25
7.5K0
大数据领域的性能测试Benchmark介绍
一、Benchmark简介 Benchmark是一个评价方式,在整个计算机领域有着长期的应用。正如维基百科上的解释“As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply by looking at their specifications.Therefore, tests were developed that all
Albert陈凯
2018/04/04
4.3K0
腾讯大数据团队主导Apache社区新一代分布式存储系统Ozone 1.0.0发布
近日,由腾讯大数据团队主导的Ozone 1.0.0版本在Apache Hadoop社区正式发布。经过2年多的社区持续开发和腾讯内部1000+节点的实际落地验证,Ozone 1.0.0已经具备了在大规模生产环境下实际部署的能力。 Ozone 是Apache Hadoop社区推出的新一代分布式存储系统,它的出现满足了大量小文件的存储问题,解决了Hadoop分布式文件系统在可扩展性上的缺陷。作为Hadoop生态圈的一款新的对象存储系统,能够支持百亿甚至千亿级文件规模的存储。 腾讯大数据团队Ozone项目负
腾讯大数据
2020/09/27
1.2K1
SQL on Hadoop在快手大数据平台的实践与优化
SQL on Hadoop,顾名思义它是基于Hadoop生态的一个SQL引擎架构,我们其实常常听到Hive、SparkSQL、Presto、Impala架构,接下来,我会简单的描述一下常用的架构情况。
Fayson
2019/07/22
1.8K0
SQL on Hadoop在快手大数据平台的实践与优化
开箱即用,腾讯数据湖计算为海量数据分析赋能
导读 / Introduction 数据湖解决了海量异构数据的入湖和存储需求。通过对海量数据的分析挖掘,提升对数据的洞察,助力数字化决策,进而促进业务发展,是每个企业构建数据湖的根本目的所在。随着业务迭代的不断加速,企业对数据时效性和数据分析敏捷性提出了更高的要求。为此,腾讯云推出了数据湖计算(Data Lake Compute,DLC)。DLC采用存储和计算分离的架构,结合腾讯云对象存储COS和弹性容器服务EKS,打造了一个开箱即用、弹性扩展、按量付费的交互式分析服务。 图1 DLC架构图 高性
腾讯大数据
2021/05/13
1.6K0
Apache Hive 是怎样做基于代价的优化的?
上一篇文章 Apache Calcite 为什么能这么流行 末尾提到要单独开一篇文章,聊下 Hive 怎么利用 Calcite 做基于代价查询优化,现在兑现承诺。
Lenis
2019/12/25
1.2K0
Apache Hive 是怎样做基于代价的优化的?
【赵渝强老师】大数据生态圈中的组件
大数据体系架构中的组件非常多,每个组件又属于不同的生态圈系统。从最早的Hadoop生态圈体系开始,逐步有了Spark生态圈体系和Flink生态圈体系。因此在学习大数据之前有必要了解一下每一个生态圈体系中具体包含哪些组件,以及它们的作用又是什么。
赵渝强老师
2024/09/04
4000
【赵渝强老师】大数据生态圈中的组件
云原生数据湖为什么要选择腾讯云大数据DLC,一份性能分析报告告诉你!
摘要 日前,腾讯云大数据数据湖计算 DLC 与国内两家知名云厂商的数据湖产品进行了性能对比,其中腾讯云 DLC 在三款产品中SQL平均执行查询时间短,性能表现优。腾讯云大数据 DLC 在存算分离和大数据量查询场景下,海量查询性能较 A 厂商 产品提升 248%,较 B 厂商产品提升36%。 在存算分离大数据量查询场景下,腾讯云大数据 DLC 较 A 厂商 、B 厂商表现更优,同时在较大任务上的任务执行成功率更高,所有任务均成功执行。结合性能、性价比、使用体验等因素,腾讯云 DLC 在云原生数据湖选择上整体上
腾讯云大数据
2022/09/09
1.9K0
云原生数据湖为什么要选择腾讯云大数据DLC,一份性能分析报告告诉你!
推荐阅读
相关推荐
一站式数据智能平台哪家强?腾讯云TCHouse-X深度解析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档