Apache Kylin : Analytical Data Warehouse for Big Data

Page tree

Welcome to Kylin Wiki.

摘要

    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/ 。

    为了使得新老用户能够简单直接地了解 Kylin3 和 Kylin 4 的性能差别,Kylin 发布小组在一个标准的软硬件环境,提供一个易于复现、易于观测的性能测试方式,从而为用户提供不同版本之间 Kylin,乃至不同 OLAP 工具之间性能比较的手段。由于笔者比较熟悉 AWS 系列产品,所以这里选择 AWS 平台的 EMR 产品作为测试平台。

准备

硬件资源一览

资源类型资源大小
单节点内存64GB
单节点 vCPU16
节点类型 (EC2 Instance Type)m5.4xlarge
单节点硬盘(EBS)

磁盘空间 : (400 or 700) GB * 2

磁盘类型 : SSD

单节点网络带宽Up to 10 Gbps
单节点磁盘带宽4,750 Mbps
集群节点数量4 Core Node + 1 Master Node
集群 Yarn 可供使用内存204.80 GB (51.2 GB * 4)
集群 Yarn 可供使用核心52  (13 * 4)
集群 HBase 可供使用的 Java 堆192 GB (48 * 4)

备注

  • 什么是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 集群的描述文件见附件

Hadoop 组件版本一览

组件版本
Kylin3.1.2 & 4.0.0
EMRemr-5.31.0
Javaopen jdk 1.8.0_265
Hadoop2.10.0-amzn-0
Hive2.3.7-amzn-1
HBase1.4.13
Spark2.4.6

备注

性能度量标准一览

度量说明
Cubing Duration从原始数据加载数据,构建为 Cube 过程的耗时
Storage SizeCube 占据的磁盘空间
Response TimeTPC-H/SSB 查询集对应的 Response Time

QPS (Max)

持续十五分钟的并发查询测试,取最大的 QPS 作为结果

测试步骤

  1. 准备测试需要的 JMeter 文件,创建 EMR 集群的脚本
  2. 按照 scale factor = 10 分别创建 TPC-H 和 SSB 的数据文件,保存到 S3
  3. 创建 EMR 集群,根据不同 Kylin 的版本,对应的 Hadoop 组件有所不同,具体参考附件提供的脚本
  4. 下载 TPC-H 和 SSB 的数据文件,Hive 建表
  5. 部署和启动 Kylin 实例
  6. 导入 TPC-H 或者 SSB 的 Kylin 元数据,触发构建任务
  7. 记录 “Cubing Duration” 和 “Storage Size”
  8. 下载 JMeter 文件,在三分钟的预热查询后,依次执行单线程串行查询测试,多线程并发查询测试,每轮测试 15 分钟,测试完成收集保存 JMeter 的报告文件
  9. 释放集群资源,测试结束


测试结果

TPC-H 基准结果

MetricsKylin 3.1.2Kylin 4.0.0
Cubing Duration287.75 min107.61 min
Storage Size960.033 GB263.428 GB
QPS (Max)0.231.23


平均查询响应时间对比


并发测试对比

对于 Kylin 4,我们做了单线程和四线程查询性能对比测试,结果如下。


SSB 基准结果

MetricsKylin 3.1.2Kylin 4.0.0
Cubing Duration16.2 min12.33 min
Storage Size16.7 GB12.04 GB
QPS (Max)34.6131.24


平均查询响应时间对比

结论

数据加载时间和索引尺寸

相对 Kylin 3 的 MR 构建引擎,得益于较高的资源利用率,同时减少了转换为 HFile 的步骤,Kylin 4 大大减少构建 Cube 使用的时间,构建时间(Cubing Duration)减少了 62.6%;

由于 Kylin 3 存在两份不同格式的索引文件,并且列式存储的 Parquet 使用的空间也较少,Kylin 4 的索引文件磁盘空间(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 经过一些基本的调参,性能也能满足亚秒级查询的需求,与 Kylin3 表现相对比较接近。

学习成本和调参难度

相对 Kylin 3 有众多的构建步骤,同时也依赖多种组件,如 Hive、MapReduce、HBase,需要学习和了解多种技术架构,熟悉多种组件参数配置,学习成本和调参难度较大。

与此对应,Kylin 4 构建和查询都统一切换到流行的 Spark 计算引擎,新用户上手 Kylin 4,学习和调参基本只需要掌握 Spark 即可,这些学习材料可以说很容易找到,并且常用的参数项要远远少于 Kylin 3。

其它

由于时间原因,这里 Kylin3 的构建过程并没有使用 Spark 和 Flink 来进行测试,我们相信如果使用 Spark 和 Flink 作为构建引擎, Kylin 3 的构建速度会得到一定程度的提升,但是由于存在转换为 HFile 的步骤, Kylin 3 仍会慢于 Kylin 4。

囿于精力和个人水平,这次测试过程并没有做到百分百的发挥不同版本的最好水平,笔者在此特附上性能测试使用的配置文件、脚本、HTML测试报告,欢迎大家多多尝试和发现更多有趣的结论。谢谢大家。

文档和附件



  • No labels