DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Apache Kylin : Analytical Data Warehouse for Big Data
DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
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 |
| 单节点 vCPU | 16 |
| 节点类型 (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) |
| 组件 | 版本 |
|---|---|
| Kylin | 3.1.2 & 4.0.0 |
| EMR | emr-5.31.0 |
| Java | open jdk 1.8.0_265 |
| Hadoop | 2.10.0-amzn-0 |
| Hive | 2.3.7-amzn-1 |
| HBase | 1.4.13 |
| Spark | 2.4.6 |
| 度量 | 说明 |
|---|---|
| Cubing Duration | 从原始数据加载数据,构建为 Cube 过程的耗时 |
| Storage Size | Cube 占据的磁盘空间 |
| Response Time | TPC-H/SSB 查询集对应的 Response Time |
QPS (Max) | 持续十五分钟的并发查询测试,取最大的 QPS 作为结果 |
| Metrics | Kylin 3.1.2 | Kylin 4.0.0 |
|---|---|---|
| Cubing Duration | 287.75 min | 107.61 min |
| Storage Size | 960.033 GB | 263.428 GB |
| QPS (Max) | 0.23 | 1.23 |
对于 Kylin 4,我们做了单线程和四线程查询性能对比测试,结果如下。
| Metrics | Kylin 3.1.2 | Kylin 4.0.0 |
|---|---|---|
| Cubing Duration | 16.2 min | 12.33 min |
| Storage Size | 16.7 GB | 12.04 GB |
| QPS (Max) | 34.61 | 31.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测试报告,欢迎大家多多尝试和发现更多有趣的结论。谢谢大家。