Apache Kylin 社区于日前宣布:Apache Kylin 4.0.0-beta 正式发布!欢迎大家下载使用。
Apache Kylin 是一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析 (OLAP) 能力,支持对超大规模数据进行亚秒级查询,已被 eBay、腾讯、美团、滴滴、汽车之家、贝壳找房、OLX 集团等全球上千家企业采用。
1. Release Notes
Apache Kylin 4.0.0-beta 是继 Kylin 4.0.0-alpha 之后的一个重要版本。当前的 4.0.0-beta 是 Kylin 4.x 发布的第二个测试版本,修复了 4.0.0-alpha 中的若干 bug,并且补充了一些对 Kylin 3.x 原有功能的支持,包括System Cube,Hadoop 3 的支持,部分高级函数,Cube Planner Phase
1 等等;后续我们会持续更新和发布新版本,欢迎大家多多参与体验和讨论。
Kylin 4 使用 Parquet 这种真正的列式存储来代替 HBase 存储,从而提升文件扫描性能;同时,Kylin 4 重新实现了基于 Spark 的构建引擎和查询引擎,使得计算和存储的分离变为可能,更加适应云原生的技术趋势。
本次发布共添加了 25 个新功能以及改进,修复了 14 个问题,详情请访问:
https://kylin.apache.org/docs/release_notes.html
重要更新:
[KYLIN-4857] - 为 Kylin 4 重构System Cube
[KYLIN-4842] - 为 Kylin 4 支持 grouping sets 函数
[KYLIN-4829] - 为查询引擎支持线程级别的 Spark 参数配置
[KYLIN-4813] - 为构建引擎重新开发日志系统
[KYLIN-4858] - 支持在 CDH 6.X 上部署Kylin 4
[KYLIN-4818] - Kylin 4 支持 Cuboid 行数统计
[KYLIN-4817] - 为 Kylin 4 重构 Cube 迁移工具
2. 下载
下载 Apache Kylin 4.0.0-beta 源代码及二进制安装包,请访问下载页面:
https://kylin.apache.org/cn/download/
3. 文档更新
在本次发布过程中,我们也在持续更新和发布新的使用文档,欢迎大家提出宝贵的意见。
截至目前,我们已经发布了 Kylin 4 在不同 Hadoop 版本的安装文档,同时也更新了关于 Cube Planner 功能、System Cube 功能、读写分离功能和垃圾清理工具等介绍文档。更多文档欢迎大家参考 Apache Kylin 官方 wiki:
https://cwiki.apache.org/confluence/display/KYLIN/User+Manual+4.X
4. Kylin 4 社区用户反馈
在最近的三个月,我们陆续收到大家的试用体验以及性能对比报告。我们总结了一下,用户试用的整体反馈是:
1. 对于 Kylin 4 新的构建和查询的调优和排错过程,需要一定的时间来适应和学习。
2. 对比 Kylin 3 的 HBase Storage,对于简单查询,Kylin 4 的查询响应时间基本持平或者耗时有一定幅度的增加;对于扫描行数较多或者返回行数较多的复杂查询,Kylin 4 的稳定性和响应时间有较大的优势。
3. Kylin 4 的查询和构建性能调优仍有较大的优化空间,社区正在尝试的途径包括:将 Spark 版本升级到 Spark 3;使用 Alluxio,JuiceFS 等提供缓存服务;针对不同场景提供更多高级索引等策略。
以下是来自某互联网大厂用户的部分测试报告:
* 注意:本次结果仅供参考
场景一(简单查询)
通过以上结果展示,可见在没有做查询优化的情况下,Kylin 4.0 简单查询的查询响应时间表现不及 Kylin 3.0。通过初步沟通和测试,经过 ShardBy Column 优化手段后,简单查询的查询响应时间可以降低 1~2s,与 Kylin 3.0 的性能变得更加接近。
Kylin 4.0 简单查询的查询响应时间表现不及 Kylin 3.0 的原因,经分析主要如下:
1. HBase 对 rowkey 的索引速度快,Region 有缓存机制,容易实现亚秒级响应;
2. 本次测试使用的 Spark 3 开启了 AE,也会对小查询有一定的负面影响;
3. SparkSQL 执行需要准备时间进行节点分配和闭包分发,需要访问 Hadoop API 进行文件访问,这些额外的时间都是可以通过后续的优化来改善的,例如添加 Alluxio/JuiceFS 提供缓存。
场景二(返回结果行数多的查询)
这些 SQL 的模式主要是如下两类:
- 模式一:SELECT DISTINCT product FROM table WHERE version IN ( ...so many versions... )
- 模式二:SELECT package, SUM(occur), count(distinct device) FROM table WHERE version IN ( ...so many versions... ) group by package
由于 IN 子句中包含过多的可选值,加上 package 是高基维度,导致 Kylin 在扫描和二次聚合的压力都非常大,Kylin 3.0 不适合进行这样的“导出式”查询。但 Kylin 4.0 利用 Spark 计算引擎的能力,能够在十分可观的时间内得出需要的结果。这里举个例子:
场景三(时间跨度大的查询)
这 4 个查询的 SQL 除了在时间范围上不同其他完全相同。从数据不难看出,时间跨度增长一倍,Kylin 3.0 需要扫描的数据量和查询响应时间也相应地增长近一倍。而 Kylin 4.0 使用 Spark 分布式计算,更高的并行度带来的优势便体现了出来。
当前 Kylin 4.0.0-beta 已经成为一个相对稳定的版本,在多个早期用户的测试验证中都验证了构建和查询功能基本达到相对完备的程度,但是目前仍有不少在性能和功能上的提升空间。
我们十分欢迎大家积极参与到测试和开发的过程中,并且对 Kylin 4 的下一步开发路线提供你们的宝贵意见,说不定下一个 Kylin Committer 就是你!
5. 社区贡献者
感谢所有参与 Kylin 4.0.0-beta 版本设计、开发、测试、讨论的社区贡献者们:
* 注:以下名单按照首字母排序,不分先后
Congling Xia, Kaiqi Xue, Lei Zhu, Linghui Zeng, Rupeng Wang, ShengJunZheng, Xiaoxiang Yu, Yangmin Luo, Yaqian Zhang, Zhichao Zhang