在演讲之前,我想首先代表 eBay 祝贺 Apache Kylin 成立 5 周年。Apache Kylin 是出色的 OLAP 产品,希望 Apache Kylin 社区在未来能够带来更多了不起的功能,并对行业产生更大的影响。
今天的议程包括:
01 eBay 的开源文化
eBay 是一家拥有 30 年历史的电子商务公司,为全球的买卖双方提供线上市场。我们的业务发展速度极快,通过进行巨大的技术转型和发展,后端技术团队在促进 eBay 业务实现方面发挥着非常重要的作用。在过去的十年中,核心技术团队推动着开源文化成为了我们的 DNA,给我们带来了巨大的改变和丰硕的成果。
eBay 鼓励开源内部项目。正如大家在 eBay 公共 GitHub 上看到的那样,eBay 有 100 多个开源项目,并且会越来越多。我们认为,他们值得与社区分享,使更多的用户从中受益。eBay 的一些重要产品,例如 Kylin,Eagle,Griffin 等,有着更大的社区影响力,目前他们都已经贡献到了 Apache 软件基金会。
除了鼓励内部项目开源之外,eBay 还参与并使用了大量外部开源产品来重建我们的基础架构和平台。我们利用 Kubernetes 构建了我们的第三代云平台。我们还使用了 Apache Hadoop 和 Spark 来支持大量数据处理和即席查询。我们也利用了 Kafka 和 Flink 来构建托管的实时数据平台。在使用这些产品的同时,我们也为它们做出了贡献。在 eBay 这样的大型环境中,我们检测出了许多问题,贡献了数千项对原有项目的改进,并以此回馈社区。
开源文化就是我们的 DNA,我们也非常高兴我们的技术能与所有行业中领先的技术相结合。
02 Kylin 在 eBay 的发展历程
接下来让我谈谈 Kylin 在 eBay 上的发展历程。
eBay 和 Apache Kylin 有着悠久的历史与关系。2013 年,为了解决在 Hadoop 大型数据集上的 OLAP 查询性能需求, Kylin 项目在 eBay CCOE 中启动。它基于多维数据集技术构建,可以在亚秒级内响应查询。经过一年的发展,Kylin 成为 Apache 孵化器项目,并最终在 2015 年 11 月毕业成为 Apache 顶级项目。这是 eBay 团队的一项重大创新,并且在今天给更多的社区用户带来了益处。
Cube Planner
eBay 一直与 Apache Kylin 社区紧密合作,持续地贡献了有关功能改进以及错误修复的相关代码。在 Kylin 2.3.0 版本中的 Cube Planner 就是来自 eBay 贡献的一项主要功能。
OLAP 解决方案权衡了在线查询速度和离线 Cube 构建成本,即构建 Cube 的计算资源,以及用于保存 Cube 数据的存储资源。资源效率是 OLAP 引擎最重要的能力。为了达到这个目的,选择性地只预构建那些最有价值的 Cube 是至关重要的。
Kylin 拥有的 aggregation group 聚合组的功能可以减少 cuboid 的数量。借助 Cube Planner 能使 Apache Kylin 的资源利用率更高。它可以智能地构建 partial cube,以最大程度地降低构建 Cube 的成本,同时最大程度地为最终用户查询提供符合预期的服务,在运行时从查询中学习其模式和规律,并相应地动态地推荐 cuboids。
在图中大家可以看到,在第 1 阶段中,Cube Planner 可以在构建 Cube 之前根据估计的 cuboid 大小来列出建议构建的 cuboid,在第 2 阶段中,可以根据查询统计信息为现有的 Cube 对 cuboid 列表作出建议。Cube 需要在线一段时间去获得足够的查询命中率,然后 Cube Planner 才能足够智能并且给出建议。
此功能在 2.5.0 中默认启用,极多维度的 Cube 构建就可以从中受益。更多关于 Cuboid 剪枝优化和 Cube Planner 的介绍