性能测试解读:Kyligence vs Spark SQL
全球各种大数据技术涌现的今天,为了充分利用大量数据获得竞争优势,企业需要高性能的数据分析平台,可靠并及时地提供对海量数据的分析见解。对于数据驱动型企业,在海量数据上交互式分析的能力是非常重要的能力之一。本测试侧重在多维分析场景,对比Spark SQL 与 Kyligence 产品在大规模数据集上的查询响应的性能差异和特点。
测试产品介绍
Spark SQL 本质上是基于 DAG 的 MPP,提供 SQL 或类 SQL 的查询接口,通过将 SQL 查询请求转换成逻辑计划、物理执行,然后进行分布式的执行。在查询执行的过程中,充分利用完全基于内存的并行计算做到低延迟查询(通常是秒级到分钟级,数据量越大查询响应越慢)。
Kyligence Enterprise 是企业级智能大数据OLAP,基本思路是对数据作多维索引,查询时只扫描索引而不访问原始数据达到提速。作为充分利用了预计算技术的产品,Kyligence Enterprise 擅长提供多维分析的亚秒级响应能力。特别是在数据量呈倍数增长时,查询性能依然具有很显著的优势。
本次测试的产品是Kyligence Enterprise 4.0,对照的大数据分析引擎Spark SQL 2.4.1。
确定测试基准

在测试基准的选择上,我们考虑了实际用户的分析场景和查询特征,最终决定根据TPC-H基准进行测试。TPC-H是一个抽象了商品销售场景的决策支持系统测试基准,它定义了8张表、22条查询。测试查询普遍比较复杂,良好地代表了广泛的业务场景中,最常见的分析主题,比如定价和促销分析、供应流量和销售渠道分析、营收和利润分析、客户满意度分析、市场份额分析等。
- 查询集中的Query 1,总结了已经开票的、寄出的、退回的业务交易量。

- 查询Query 3,分析了具有最高价值的n个未发货交易单。

- 查询Query 4,确定了订单排序系统的工作情况,并评估了客户满意度。

更多查询和数据集的信息,可以了解TCP-HBenchmark标准。
准备测试数据和环境
我们使用TPC-H数据工具生成了不同规模的测试数据集,在20台物理机中使用一个资源队列进行测试。
测试查询前,KyligenceEnterprise产品通过预计算生成了不同大小的 TPC-H 数据文件,以 parquet 格式存储在安装节点的 HDFS 上供查询测试使用。每条查询都执行了多次,最终取其平均值作为实验结果。整个测试过程中,关闭了KyligenceEnterprise 4.0 的查询缓存机制。
数据集
以下为每个测试数据集中,各个表的行数。

硬件环境
测试集群的硬件配置。

测试结果和解读

在5亿数据的TPC-H 数据集上,Kyligence Enterprise 4.0的查询性能普遍优于Spark SQL 2.4。22条测试查询中,Kyligence 产品支持60% 查询在3秒以内返回结果,90% 查询可以在10秒以内返回结果,最大查询延迟也只有12.81秒。这些数据反映了,在亿级大数据上, Kyligence产品能够支持秒级的的交互式分析场景。

对比来看,Kyligence Enterprise 4.0 的查询性能明显优于 Spark SQL 2.4,其中有55% 的查询提升在10倍以上,96% 查询有提升 (query 22稍慢于Spark SQL 2.4,但性能相差不足1秒),性能优势非常明显,单条查询的性能最大提升81.81倍(query 1);单条查询时间最多缩短150秒(query 18)。

当数据集继续增加到 10亿、50亿、100亿时,即使集群资源不扩充,Kyligence Enterprise 4.0的查询延迟的总时间相对平稳。面对数据量倍数增长到100亿时,Spark SQL 作为在内存中完成数据中间处理过程的分析引擎,需要的资源也需要相应增长,否则就如图展现出由于内存资源不足导致查询报错。
结论和展望
通过本次TPC-H 查询性能的基准测试,我们可以得出Kyligence产品在多维分析场景下更有性能优势:
- 在5亿数据集上, Kyligence Enterprise4.0的查询性能远远优于Spark SQL 2.4。测试的22条查询中,60% 查询可以在3秒以内返回结果,90%查询可以在10秒以内返回结果,平均查询性能为Spark SQL2.4的24.47倍。
- 当数据集继续增加到 10亿、50亿、100亿时,即使集群资源不扩充,KyligenceEnterprise 4.0的查询总延迟时间相对平稳,平均每条查询的延迟时间保持在秒级。
根据上述结论,我们容易看出 Kyligence 产品非常擅长满足海量数据上的多维分析的场景,并且具有交互式和高性价比的特点。当企业的信息生态系统中数据持续增长时,选择 Kyligence 产品更是确保了技术投入的持续可用,不会因为数据量增长而导致 TCO 不断增长。SparkSQL作为 Spark 的一个处理结构化数据的程序模块,更适合抽取部分数据、周期性的转换数据,对部分数据进行灵活的简单分析。
转载自:https://kyligence.io/zh/blog/kyligence-vs-spark-sql/
性能测试解读:Kyligence vs Spark SQL的更多相关文章
- 详细解读Spark的数据分析引擎:Spark SQL
一.spark SQL:类似于Hive,是一种数据分析引擎 什么是spark SQL? spark SQL只能处理结构化数据 底层依赖RDD,把sql语句转换成一个个RDD,运行在不同的worker上 ...
- Spark SQL catalyst概述和SQL Parser的具体实现
之前已经对spark core做了较为深入的解读,在如今SQL大行其道的背景下,spark中的SQL不仅在离线batch处理中使用广泛,structured streamming的实现也严重依赖spa ...
- Spark SQL 之 Data Sources
#Spark SQL 之 Data Sources 转载请注明出处:http://www.cnblogs.com/BYRans/ 数据源(Data Source) Spark SQL的DataFram ...
- Spark SQL 之 DataFrame
Spark SQL 之 DataFrame 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述(Overview) Spark SQL是Spark的一个组件,用于结构化 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南
Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...
- Spark SQL Example
Spark SQL Example This example demonstrates how to use sqlContext.sql to create and load a table ...
- 通过Spark SQL关联查询两个HDFS上的文件操作
order_created.txt 订单编号 订单创建时间 -- :: -- :: -- :: -- :: -- :: order_picked.txt 订单编号 订单提取时间 -- :: ...
- Spark SQL 之 Migration Guide
Spark SQL 之 Migration Guide 支持的Hive功能 转载请注明出处:http://www.cnblogs.com/BYRans/ Migration Guide 与Hive的兼 ...
随机推荐
- SQL——AND、OR运算符
一.AND.OR运算符基本说明 AND : 所有条件成立,则筛选出这条记录. OR : 只要其中一个条件成立,则筛选出这条记录. 演示student表: 二.AND运算符使用 查询name = '小明 ...
- Spring Cloud--Hystrix服务熔断(线程隔离/服务降级)代码实现
一旦服务阻塞就进行服务降级或线程隔离.要不然就会导致大面积服务的瘫痪,Hystrix就是干这个的,一出现不健康的服务就进行熔断,不阻塞后面线程的执行. 引入依赖: 加注解: 这三个注解可以用一个注解搞 ...
- GRE
第一个技术是GRE,全称Generic Routing Encapsulation,它是一种IP-over-IP的隧道技术.它将IP包封装在GRE包里,外面加上IP头,在隧道的一端封装数据包,并在通路 ...
- Oracle数据库中导出某张表到SQL并关联更新
首先想到查询出结果,然后导出为SQL文件: 先导出表结构 1 在桌面建立对应的sql空文件 2 toos-->export userObjects 3 在对话框中选择你要导出的表 4 勾选上si ...
- Arduino 计算机视觉系统概述
计算机视觉系统概述 计算机视觉系统是最近比较热门的研究领域,今天开始给大家介绍下计算机视觉相关的知识. 视觉是人的所有感官中最敏感的一种,人的视觉可以感知环境,而机器的视觉却很难感知环境 为了解决计算 ...
- winform实现图片的滑动效果
使用winform实现图片的滑动效果(类似网站首页图片滑动切换效果),结果实现了,但是效果其实不是很理想.也许有更好的方法. Timer timerSlide = null; //当前 ...
- Programming Principles and Practice Using C++ Notes2
第三章对象.类型和值 对象:用来保存一个指定类型值的一些内存单元. 类型:定义一组可能的值与一组运算(对于一个对象). 值:根据一个类型来解释的内存中的一组比特. #include <iostr ...
- 关于阿里 iconfont 的使用步骤
第一步: 在iconfont库中,找到你想要的图标,加入到购物车,再在购物车中将图标加入到你的项目中去 第二步: 在项目中,可以看到刚刚加入的图标,这里是你在项目中所有用到的iconfont,选 ...
- Mysql 一些命令记录
查看数据库当前的状态 show processlist; 查询表索引的基数 show index from LoadingPlan; 重新统计表格的索引基数 analyze table Loading ...
- thinkphp5中使用phpmailer实现发送邮件功能
一.开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以163邮箱的SMTP服务为例). 1.登录163邮箱,在首页上找到“设置”. 2.选择开启的服务,一般都全选,POP3/SMTP/I ...