日前,eBay公司隆重宣布已经正式向开源业界推出分布式分析引擎:Kylin(http://kylin.io)。作为一套旨在对Hadoop环境下分析流程进行加速、且能够与SQL兼容性工具顺利协作的解决方案,Kylin成功将SQL接口与多维分析机制(OLAP)引入Hadoop,旨在对规模极为庞大的数据集加以支持。 背景信息 eBay公司当前面临的主要挑战在于,数据规模正随着用户群体的多样化拓展而水涨船高。我们的用户——比如在分析与业务部门当中希望能在保持最低延迟水平的前提下继续使用自己所熟悉的工具方案,例如Tableau与Excel。
我们很快意识到,没有任何一种外部解决方案能够切实满足我们的具体要求——特别是在开源Hadoop社区当中。为了解决企业业务面临的这一系列紧急状况,我们决定从零开始自主打造一套平台。在优秀的技术团队与部分试点客户的通力配合之下,我们已经能够在将Kylin平台引入生产环境的同时、为其发布一套开源版本。 重点特性概述 Kylin 是一套卓越的平台方案,能够在大数据分析领域实现以下各项特性: • 规模化环境下的极速OLAP引擎: Kylin的设计目的在于削减Hadoop环境中处理超过百亿行数据时的查询延迟时间。 其它特性:
基本设计思路 Kylin平台的设计思路其实并非全新产生。在过去三十年当中,已经有很多技术方案使用到同样的理论依据来实现分析流程加速。具体而言,此类技术包括将预先计算完成的结果保存起来以备分析查询、利用所有可能的维度组合为每个层级生成cuboid(基本方体)、或者是在不同层级上对全部指数进行计算。 下面这幅图片所示为cuboid的拓扑结构,供大家用作参考: 当数据规模变得越来越大时,预计算处理机制就会变得无法实现——即使硬件性能再强大也于事无补。不过在Hadoop强大的分布式计算能力支持下,计算任务能够借助成百上千个计算节点的总体资源。这就保证了Kylin能够以并发方式对这些计算任务进行处理,并通过合并生成最终结果——这能够显著降低整体处理时间。 从关系型到键-值型 下面举一个实例,假设Hive表当中所保存的几条记录代表着一套关系型结构。当其数据规模增长到极其巨大的水平时——例如上百亿甚至过万亿行数据——那么像“2010年我们在美国本土售出了多少套技术类方案”这样的简单问题也将带来涵盖巨大数据量的表内容扫描,给出应答的延时状况也会变得无法接受。由于每一次运行查询时所需要的值是固定的,因此我们完全可以预先进行计算并对结果加以存储、以备日后随时调用。这项技术被称为从关系型到键-值型(Relational to Key—Value,简称KV)处理。处理过程将生成所有维度组合并如下图所示将测得值显示出来——图片右侧为计算结果。图片的中间一列内容由左至右表示的是这类大规模数据处理流程中数据是如何由Map Reduce进行计算的。 Kylin的构建正是以这套理论为基础,而且在对大规模数据进行处理时充分发挥了Hadoop生态系统的强大能力: 1. 从Hive当中读取数据(这些数据被保存在HDFS之上) 以上图表勾勒出Cube构建引擎(Cube Build Engine)是如何以离线处理方式将关系型数据转化成键-值型数据的。其中的黄线部分还表现出在线分析数据的处理流程。数据请求可以利用基于SQL的工具由SQL提交而产生,或者利用第三方应用程序通过Kylin的RESTful服务来实现。RESTful服务会调用Query Engine,后者则检测对应的目标数据集是否真实存在。如果确实存在,该引擎会直接访问目标数据并以次秒级延迟返回结果。如果目标数据集并不存在,该引擎则会根据设计将无匹配数据集的查询路由至Hadoop上的SQL处、即交由Hive等Hadoop集群负责处理。 以下为关于Kylin平台内所有组件的详细描述。 在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运算。 与各类搜索引擎类似(正如众多研究人员所指出),倒排索引是此类预构建结果的理想匹配机制。 开源 Kylin已经以开源姿态被交付至技术社区。为了以Kylin为核心发展出更为强大的生态系统,我们目前正提议将Kylin转化为Apache孵化器项目。在Owen O’Malley(Hortonworks公司联合创始人兼Apache成员)与Julian Hyde(Apache Calcite缔造者,目前供职于Hortonworks公司)等Hadoop开发者社区支持者的鼎力协助,我们相信Kylin足以乘开源社区这股强劲的东风顺利跨入新的纪元。 我们欢迎大家加入到Kylin贡献者阵营中来,感兴趣的朋友请点击以下链接以访问Kylin网站并获取更多详尽信息:http://kylin.io. 作为起步,大家并不一定马上就要对核心代码库进行开源贡献,从以下方面着手也是不错的选择: 要获取更多细节信息或者进一步探讨上述议题,大家可以在twitter上关注我们@KylinOLAP或者加入我们的谷歌群组: 总结 Kylin已经在eBay公司内部融入生产环境,专门负责处理规模极端庞大的数据集。这套平台拥有显著的性能优势,实践证明其能够帮助分析师们轻松借助自己所为熟悉的工具对Hadoop当中的数据进行充分利用。我们也乐于推出Kylin的开源版本。欢迎大家给出自己的反馈与建议,我们期待着您参与到这个开源大家庭中来。 转自:http://www.csdn.net/article/2014-10-25/2822286 |