Kyligence Copilot - AI 数智助理,以 AI 变革企业经营与管理! 立即了解更多

Kylin 正式发布:面向大数据的终极 OLAP 引擎方案

摘要:日前,eBay 公司隆重宣布已经正式向开源业界推出分布式分析引擎,作为一套旨在对 Hadoop 环境下分析流程进行加速、且能够与 SQL 兼容性工具顺利协作的解决方案。

日前,eBay 公司隆重宣布已经正式向开源业界推出分布式分析引擎:Kylin(https://kylin.io)。作为一套旨在对 Hadoop 环境下分析流程进行加速、且能够与 SQL 兼容性工具顺利协作的解决方案,Kylin 成功将 SQL 接口与多维分析机制(OLAP)引入 Hadoop,旨在对规模极为庞大的数据集加以支持。

背景信息

eBay 公司当前面临的主要挑战在于,数据规模正随着用户群体的多样化拓展而水涨船高。我们的用户——比如在分析与业务部门当中希望能在保持最低延迟水平的前提下继续使用自己所熟悉的工具方案,例如 Tableau 与 Excel。

有鉴于此,我们与公司内部的分析部门进行紧密合作,并勾勒出 eBay 眼中足以构成成功产品的基本要求:
1. 数百亿数据行的查询延迟需要保持在次秒级别。
2. 能够为使用 SQL 兼容性工具的用户提供 ANSI SQL。
3. 完整的 OLAP 方案以实现各类高级功能。
4. 拥有对高基数与超大规模业务体系的支持能力。
5. 面向成千上万用户的高并发性处理能力。
6. 能够处理 TB 乃至 PB 级别分析任务的分布式横向扩展架构。

我们很快意识到,没有任何一种外部解决方案能够切实满足我们的具体要求——特别是在开源 Hadoop 社区当中。为了解决企业业务面临的这一系列紧急状况,我们决定从零开始自主打造一套平台。在优秀的技术团队与部分试点客户的通力配合之下,我们已经能够在将 Kylin 平台引入生产环境的同时、为其发布一套开源版本。

重点特性概述

Kylin 是一套卓越的平台方案,能够在大数据分析领域实现以下各项特性:

• 规模化环境下的极速 OLAP 引擎: Kylin 的设计目的在于削减 Hadoop 环境中处理超过百亿行数据时的查询延迟时间。
• Hadoop 上的 ANSI SQL 接口:Kylin 能够在 Hadoop 之上提供 ANSI SQL 并支持大部分 ANSI SQL 查询功能。
•交互式查询功能:用户可以通过 Kylin 以秒级以下延迟水平实现与 Hadoop 数据的交互——在面对同一套数据集时,其性能表现优于 Hive 查询机制。
• 利用 MOLAP cube(立方体)对数百亿行数据进行查询: 用户能够在 Kylin 当中定义一套数据模型对其进行预构建,其中所能包含的原始数据记录可超过百亿行。
• 与商务智能工具进行无缝化集成: Kylin 目前能够与多种商务智能工具相集成,包括 Tableau 以及其它第三方应用程序。
• 开源 ODBC 驱动程序: Kylin 的 ODBC 驱动程序从零开始逐步构建而成,而且能够与 Tableau 实现良好的协作效果。我们也已经对这部分驱动程序进行开源处理并发布至技术社区当中。

其它特性:

任务管理与监控机制
通过压缩与编码机制降低存储容量需求
cube 的增量式更新
利用 HBase 协处理器实现查询延迟控制
对不同计数进行近似查询的能力(HyperLogLog)
提供易于使用的 Web 界面,旨在对 cube 进行管理、构建、监控与查询
cube/ 项目层面对 ACL 进行设置的安全功能
支持 LDAP 集成
基本设计思路

Kylin 平台的设计思路其实并非全新产生。在过去三十年当中,已经有很多技术方案使用到同样的理论依据来实现分析流程加速。具体而言,此类技术包括将预先计算完成的结果保存起来以备分析查询、利用所有可能的维度组合为每个层级生成 cuboid(基本方体)、或者是在不同层级上对全部指数进行计算。

下面这幅图片所示为 cuboid 的拓扑结构,供大家用作参考:

当数据规模变得越来越大时,预计算处理机制就会变得无法实现——即使硬件性能再强大也于事无补。不过在 Hadoop 强大的分布式计算能力支持下,计算任务能够借助成百上千个计算节点的总体资源。这就保证了 Kylin 能够以并发方式对这些计算任务进行处理,并通过合并生成最终结果——这能够显著降低整体处理时间。

从关系型到键-值型

下面举一个实例,假设 Hive 表当中所保存的几条记录代表着一套关系型结构。当其数据规模增长到极其巨大的水平时——例如上百亿甚至过万亿行数据——那么像“2010 年我们在美国本土售出了多少套技术类方案”这样的简单问题也将带来涵盖巨大数据量的表内容扫描,给出应答的延时状况也会变得无法接受。由于每一次运行查询时所需要的值是固定的,因此我们完全可以预先进行计算并对结果加以存储、以备日后随时调用。这项技术被称为从关系型到键-值型(Relational to Key—Value,简称KV)处理。处理过程将生成所有维度组合并如下图所示将测得值显示出来——图片右侧为计算结果。图片的中间一列内容由左至右表示的是这类大规模数据处理流程中数据是如何由 Map Reduce 进行计算的。

Kylin 的构建正是以这套理论为基础,而且在对大规模数据进行处理时充分发挥了 Hadoop 生态系统的强大能力:

1. 从 Hive 当中读取数据(这些数据被保存在 HDFS 之上)
2. 运行 Map Reduce 任务以实现预计算
3. 将 cuba 数据保存在HBase 当中
4. 利用 Zookeeper 进行任务协调

架构

以下图表所示为 Kylin 的高层架构。

以上图表勾勒出 Cube 构建引擎(Cube Build Engine)是如何以离线处理方式将关系型数据转化成键-值型数据的。其中的黄线部分还表现出在线分析数据的处理流程。数据请求可以利用基于 SQL 的工具由 SQL 提交而产生,或者利用第三方应用程序通过 Kylin 的 RESTful 服务来实现。RESTful 服务会调用 Query Engine,后者则检测对应的目标数据集是否真实存在。如果确实存在,该引擎会直接访问目标数据并以次秒级延迟返回结果。如果目标数据集并不存在,该引擎则会根据设计将无匹配数据集的查询路由至 Hadoop 上的 SQL 处、即交由 Hive 等 Hadoop 集群负责处理。

以下为关于 Kylin 平台内所有组件的详细描述。

• 元数据管理工具(Metadata Manager): Kylin 是一款元数据驱动型应用程序。元数据管理工具是一大关键性组件,用于对保存在 Kylin 当中的所有元数据进行管理,其中包括最为重要的cube元数据。其它全部组件的正常运作都需以元数据管理工具为基础。
• 任务引擎(Job Engine): 这套引擎的设计目的在于处理所有离线任务,其中包括 shell 脚本、Java API 以及 Map Reduce 任务等等。任务引擎对 Kylin 当中的全部任务加以管理与协调,从而确保每一项任务都能得到切实执行并解决其间出现的故障。
• 存储引擎(Storage Engine): 这套引擎负责管理底层存储——特别是 cuboid,其以键-值对的形式进行保存。存储引擎使用的是 HBase——这是目前H adoop 生态系统当中最理想的键-值系统使用方案。Kylin 还能够通过扩展实现对其它键-值系统的支持,例如 Redis。
• REST Server: REST Server 是一套面向应用程序开发的入口点,旨在实现针对 Kylin 平台的应用开发工作。 此类应用程序可以提供查询、获取结果、触发 cube 构建任务、获取元数据以及获取用户权限等等。
• ODBC 驱动程序:为了支持第三方工具与应用程序——例如 Tableau ——我们构建起了一套 ODBC 驱动程序并对其进行了开源。我们的目标是让用户能够更为顺畅地采用这套 Kylin 平台。
•查询引擎(Query Engine):当 cube 准备就绪后,查询引擎就能够获取并解析用户查询。它随后会与系统中的其它组件进行交互,从而向用户返回对应的结果。

在 Kylin 当中,我们使用一套名为 Apache Calcite 的开源动态数据管理框架对代码内的 SQL 以及其它插入内容进行解析。Calcite 架构如下图所示。(Calcite 最初被命名为 Optiq,由 Julian Hyde 所编写,但如今已经成为 Apache 孵化器项目之一。)

Kylin 在 eBay 公司中的应用

在对 Kylin 进行开源化处理的同时,我们已经在 eBay 公司的多个业务部门当中将其应用于生产实践。其中规模最大的用例就是对由 120 多亿条源记录所生成的超过 14TB cube 数据进行分析。90% 的查询请求都能在 5 秒钟之内获取到返回结果。现在,我们拥有更多面向分析师以及业务用户的用例,他们能够访问这些分析机制并轻松通过 Tableau 仪表板获取相关结果——而不再需要借助 Hive 查询或者 shell 命令等复杂机制。

下一步发展规划

• 在高基数维度上支持 TopN 算法(即对大量对象进行排序并从中选取前 N 位结果):目前的 MOLAP 技术在高基数维度上进行查询时的表现尚算不上完美——例如对单一列中的数百万个不同值进行 TopN 运算。

与各类搜索引擎类似(正如众多研究人员所指出),倒排索引是此类预构建结果的理想匹配机制。
• 支持混合 OLAP (简称 HOLAP): MOLAP 在历史数据查询领域拥有出色的实际表现,但由于越来越多数据需要以实时方式加以处理,因此我们需要尽快将实时/近实时处理结果与历史结果结合起来、以作为业务决策中的参考信息。很多内存内技术方案已经能够以关系型 OLAP(简称 ROLAP)的方式满足上述需求。而 Kylin 的下一代版本将成为混合 OLAP(简称 HOLAP),即结合 MOLAP 与 ROLAP 双方的优势以带来单一一套面向前端查询的入口点方案。

开源

Kylin 已经以开源姿态被交付至技术社区。为了以 Kylin 为核心发展出更为强大的生态系统,我们目前正提议将 Kylin 转化为 Apache 孵化器项目。在 Owen O’Malley(Hortonworks 公司联合创始人兼 Apache 成员)与 Julian Hyde(Apache Calcite 缔造者,目前供职于 Hortonworks 公司)等 Hadoop 开发者社区支持者的鼎力协助,我们相信 Kylin 足以乘开源社区这股强劲的东风顺利跨入新的纪元。

我们欢迎大家加入到 Kylin 贡献者阵营中来,感兴趣的朋友请点击以下链接以访问 Kylin 网站并获取更多详尽信息:https://kylin.io.

作为起步,大家并不一定马上就要对核心代码库进行开源贡献,从以下方面着手也是不错的选择:

1. Shell 客户端
2. RPC 服务器
3. 任务调度
4. 工具

要获取更多细节信息或者进一步探讨上述议题,大家可以在 twitter 上关注我们 @KylinOLAP 或者加入我们的谷歌群组:

https://groups.google.com/forum/#!forum/kylin-­‐olap

总结

Kylin 已经在 eBay 公司内部融入生产环境,专门负责处理规模极端庞大的数据集。这套平台拥有显著的性能优势,实践证明其能够帮助分析师们轻松借助自己所为熟悉的工具对 Hadoop 当中的数据进行充分利用。我们也乐于推出 Kylin 的开源版本。欢迎大家给出自己的反馈与建议,我们期待着您参与到这个开源大家庭中来。

添加企微

kyligence
关注我们

kyligence