去 HBase,Kylin on Parquet 性能表现如何?
kylin on hbase 方案经过长时间的发展已经比较成熟,但也存在着局限性,因此,kyligence 推出了 kylin on parquet 方案(了解详情戳此处)。通过标准数据集测试,与仍采用 kylin on hbase 方案的 kylin 3.0 相比,kylin on parquet 的构建引擎性能有了很大的提升,对于复杂查询也有更好的性能表现。
本篇文章主要通过使用标准 ssb 数据集和 tpc-h 数据集,来分别获取 kylin on parquet 和 kylin 3.0 构建引擎以及查询引擎的性能数据,然后进行对比分析,让用户们能够更清楚地了解到当前 kylin on parquet 相对于 kylin 3.0(仍采用 kylin on hbase )的优势和不足。
- ssb(star schema benchmark)是一套用于测试数据库产品在星型模式下性能表现的基准测试规范,也是 olap 领域经常会用到的数据集。
- tpc(transaction processing performance council,即事务处理性能委员会)有多种基准测试体系,在这里我们使用了 tpc-h 数据集。使用 tpc-h 的主要目的是测试数据库系统复杂查询的响应时间,以此来评价特定查询的决策支持能力。
kyligence 公司研发了适用于 kylin 的 ssb 和 tpc-h 数据集工具,并且包含了标准 sql,源码仓库地址如下:
- https://github.com/kyligence/ssb-kylin
- https://github.com/kyligence/kylin-tpch
01
测试环境配置
hadoop 集群:
- 4 个物理节点
- yarn 队列拥有 400g 内存和 128 个 cpu 核数
kylin 3.0 使用的是 mapreduce 引擎。kylin on parquet 目前只支持内部定制版本的 spark 引擎,定制版相对于社区版主要是做了性能方面的优化,其他方面与社区版 spark 并没有区别。
- spark 源码仓库https://github.com/kyligence/spark/tree/2.4.1-kylin-r3
- spark 二进制包下载https://download-resource.s3.cn-north-1.amazonaws.com.cn/osspark/spark-2.4.1-os-kylin-r3
02
构建性能对比
over ssb
下面两个图分别表示构建时间和构建完成后占用存储空间的对比。我们可以看到在 ssb 6000 万和 9000 万数据量下,新的构建引擎构建速度快了一倍,最终占用存储空间也减少了接近一倍。
值得一提的是,kylin on parquet 最终构建的数据只包含 hdfs 上的数据,由于 kylin on hbase cuboid 文件构建完成之后 hdfs 上的文件需要转换为 hfile,而且为了 merge 准备,hdfs 上的数据默认是不会清除的,所以实际存储还会多一倍空间;而使用 parquet 后,只需要一份数据即可以用于查询,也可以用于 segment 合并,所以总体对比,kylin on parquet 的占用空间大约只有 kylin on hbase 存储的 1/3 到 1/4 !
构建完成后前端页面会显示 cube 的大小,如下图所示:
△ kylin on parquet
△ kylin 3.0
03
查询性能对比
kylin on parquet 的查询引擎会在第一次查询的时候在 yarn 上创建一个常驻进程,专门用来处理查询任务,所以第一次查询会比较慢(初始化过程大约 20 秒),这里的测试并没有将第一次查询时间统计在内。
最近一周,查询引擎兼容性的问题也得到了进一步的修复,目前大部分 sql 查询包括 countdistinct, topn, percentile 等目前都已经能够支持。
我们使用 ssb 数据集(9000万行)和tpc-h(1200万行)官方标准 sql 进行查询响应时间测试,查询响应时间越低,查询引擎性能表现越好。两个数据集的标准查询 sql 可以在文章开始提到的 ssb 和 tpc-h 数据集工具仓库中找到。
over ssb
从下图中我们可以看到对于 ssb 数据集, kylin on parquet 查询响应要比 kylin 3.0 的要慢,但是大部分的查询还是能够在 1 秒内返回。
over tpc-h
因为 tpc-h 的主要目的是测试数据库系统复杂查询的响应时间,所以 tpc-h 数据集的 sql 更加复杂,要求更高,从下图中可以看到 kylin on parquet 对查询复杂的 sql 处理时间更快,具有明显优势。
04
总结
通过 kylin on parquet 和 kylin 3.0 查询构建引擎的性能对比数据我们能够看到,kylin on parquet 的构建引擎性能有了很大的提升,构建时间和存储空间都减少了接近一倍。从 ssb 数据集查询对比结果来看,查询引擎对于简单的查询请求和 kylin 3.0 有一定差距,但是大部分还是能够做到秒级响应。而对于 tpc-h 数据集测试使用的比较复杂的 sql 来说,一般后计算会比较多,新的查询引擎会有更好的性能表现。
目前, kylin on parquet 方案(了解详情戳此处)还处在不断完善的阶段,欢迎大家来体验。最后附上 github 仓库地址:https://github.com/kyligence/kylin-on-parquet-v2.git。
大家有问题可以提 issue 和 pr,也欢迎大家加一下上图的微信群,一起讨论完善。