Apache Kylin查询性能优化

作者:周倚平 编辑:Sammi Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区,可在亚秒内查询巨大的Hive表。 在Apache Kylin的实际部署过程中,SQL查询有时并不能如预期在很短的时间内完成,需要开发人员进行有针对性的分析和优化。 在进行分析、优化之前,我们需要先了解Apache Kylin查询的整个生命周期。这一周期主要分为三个阶段:第一阶段的SQL解析阶段,第二阶段的SQL查询阶段,以及第三阶段的数据集中和聚合阶段。接下来,我们将分阶段为大家解析应如何分析和优化Apache Kylin的查询性能。  第一阶段:SQL解析 在收到SQL请求后,Kylin Query Server会调用Calcite对SQL语句进行解析,Calcite的工作流程如下图。 首先,Calcite会将SQL语句通过范式编译器解析为一颗抽象语义树(AST)。  然后Calcite对这棵AST树进行优化,将Project(select部分)和Filter(where部分)Push down至Hadoop集群。 接着定义implement plan,共有两种方式:HepPlanner(启发式优化)和VolcanoPlanner(基于代价的优化)。目前Kylin只启用了一些必要的HepPlanner规则,大部分使用的是VolcanoPlanner。 第二阶段:SQL查询 针对子查询,UNION等场景,Calcite将SQL分解为多个OLAPContext,同时执行Filter Pushdown和Limit Pushdown等优化手段,然后提交到HBase上执行。 第三阶段:数据集中和聚合 HBase上的查询任务执行完成后,数据返回至Kylin Query Server端,由Calcite聚合多个OLAP Context的查询结果后,最后返回给前端BI。在了解Apache Kylin的查询生命周期以后,碰到一些查询速度较慢的情况,就能够有针对性地进行分析和优化了。

KAP 2.4 Release Note

Kyligence Analytics Platform (KAP) is an enterprise Online Analytical Process (OLAP) on Hadoop powered by Apache Kylin. KAP enables sub-second SQL query latency on petabyte scale dataset, provides high concurrency