性能全面提升:Kylin4 vs Kylin3 官方性能测试报告全新出炉!
Kylin 社区于 2021 年 08 月 30 日发布 Apache Kylin 4.0.0,这是 Kylin 4.X (Kylin on Parquet) 的第一个正式版本。Apache Kylin 的目标是成为一个高性能、低云上 TCO 的开源 OLAP 平台。Kylin 4 升级了架构,使 Kylin 的学习、部署、调优更加简单,也使得在云上的部署、扩容更加简单。如果你对技术架构的细节感兴趣的话,欢迎阅读我们的技术文章:https://kylin.apache.org/blog/2021/07/02/Apache-Kylin4-A-new-storage-and-compute-architecture/
为了使得新老用户能够简单直接地了解 Kylin 3 和 Kylin 4 的性能差别,Kylin 发布小组在一个标准的软硬件环境,提供一个易于复现、易于观测的性能测试方式,从而为用户提供不同版本之间 Kylin、乃至不同 OLAP 工具之间性能比较的手段。由于我们比较熟悉 AWS 系列产品,所以这里选择 AWS 平台的 EMR 产品作为测试平台。
准备
01
硬件资源一览
备注:
什么是 vCPU?Each vCPU is a thread of either an Intel Xeon core or an AMD EPYC core, except for M6g instances, A1 instances, T2 instances, and m3.medium.
关于选用的节点(EC2)的详细硬件信息, 请访问 AWS 官网:https://aws.amazon.com/ec2/instance-types
Kylin 3 使用磁盘空间较多,所以 Core 节点使用数据盘尺寸为 700GB;与此相对的,Kylin 4 的集群 Core 节点数据盘尺寸为 400GB
创建 EMR 集群的描述文件见附件
02
Hadoop 组件版本一览
备注:
关于AWS EMR Hadoop 的更多版本信息,请访问官网 https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-5x.html#emr-5310-components
03
性能度量标准一览
04
测试步骤
准备测试需要的 JMeter 文件,创建 EMR 集群的脚本
按照 scale factor = 10 分别创建 TPC-H 和 SSB 的数据文件,保存到 S3
创建 EMR 集群,根据不同 Kylin 的版本,对应的 Hadoop 组件有所不同,具体参考附件提供的脚本
下载 TPC-H 和 SSB 的数据文件,Hive 建表
部署和启动 Kylin 实例
导入 TPC-H 或者 SSB 的 Kylin 元数据,触发构建任务
记录 “Cubing Duration” 和 “Storage Size”
下载 JMeter 文件,在三分钟的预热查询后,依次执行单线程串行查询测试,多线程并发查询测试,每轮测试 15 分钟,测试完成收集保存 JMeter 的报告文件
释放集群资源,测试结束
测试结果
01
TPC-H 基准结果
平均查询响应时间对比
并发测试对比
对于 Kylin 4,我们做了单线程和四线程查询性能对比测试,结果如下。
02
SSB 基准结果
平均查询响应时间对比
结论
数据加载时间和 Cube 存储大小
相对 Kylin 3 的 MR 构建引擎,得益于较高的资源利用率,同时减少了转换为 HFile 的步骤,Kylin 4 大大减少构建 Cube 使用的时间,构建时间(Cubing Duration)减少了 62.6%;
由于 Kylin 3 存在两份不同格式的 Cube 文件,并且列式存储的 Parquet 使用的空间也较少,Kylin 4 的 Cube 磁盘空间(Storage Size)也大幅降低了 72.56%。
查询性能
在复杂查询场景下,Kylin 3 查询优化难度较大,需要对 HBase RS Server、Kylin Query Server 进行反复优化,并且压力测试场景下出现查询节点不稳定,查询响应时间随时间进行不断变差的情况;Kylin 4 由于去除了Query Server 的单点瓶颈,Response Time 和 QPS 都有明显提升,在 TPC-H 查询集上,Kylin 4 有 5-7 倍的提升,其并发也有 4 倍的提升。
在点查询场景下,Kylin 4 经过一些基本的调参,性能也能满足亚秒级查询的需求,与 Kylin 3 表现相对比较接近。
学习成本和调参难度
相对 Kylin 3 有众多的构建步骤,同时也依赖多种组件,如 Hive、MapReduce、HBase,需要学习和了解多种技术架构,熟悉多种组件参数配置,学习成本和调参难度较大。
与此对应,Kylin 4 构建和查询都统一切换到流行的 Spark 计算引擎,新用户上手 Kylin 4,学习和调参基本只需要掌握 Spark 即可,这些学习材料可以说很容易找到,并且常用的参数项要远远少于 Kylin 3。
其它
由于时间原因,这里 Kylin 3 的构建过程并没有使用 Spark 和 Flink 来进行测试,我们相信如果使用 Spark 和 Flink 作为构建引擎, Kylin 3 的构建速度会得到一定程度的提升,但是由于存在转换为 HFile 的步骤, Kylin 3 仍会慢于 Kylin 4。
囿于精力和个人水平,这次测试过程并没有做到百分百的发挥不同版本的最好水平,笔者在此特附上性能测试使用的配置文件、脚本、HTML 测试报告,欢迎大家多多尝试和发现更多有趣的结论。谢谢大家。
文档/附件 & 推荐阅读
Kylin 4 with TPC-H: https://github.com/Kyligence/kylin-tpch/issues/6
点击阅读原文,查看测试报告