Apache Kylin是Hadoop大数据平台上的一个开源OLAP引擎。它采用多维立方体预计算技术,可以将大数据的SQL查询速度提升到亚秒级别。相对于之前的分钟乃至小时级别的查询速度,亚秒级别速度是百倍到千倍的提升,该引擎为超大规模数据集上的交互式大数据分析打开了大门。
Apache Kylin也是中国人主导的、唯一的Apache顶级开源项目,在开源社区有世界级的影响力。
今天,大数据领域的发展如火如荼,各种新技术层出不穷,整个生态欣欣向荣。作为大数据领域最重要的技术——Apache Hadoop,从诞生至今已有10周年。它最初只是致力于简单的分布式存储,然后在其之上实现大规模并行计算,到如今它已在实时分析、多维分析、交互式分析、机器学习甚至人工智能等方面都有着长足的发展。
2013年年初,eBay内部使用的传统数据仓库及商业智能平台应用碰到了瓶颈,即传统的架构只支持垂直扩展,通过在一台机器上增加CPU和内存等资源来提升数据处理能力,相对于数据指数级的增长,单机扩展很快就达到了极限。另一方面,Hadoop大数据平台虽然能存储和批量处理大规模数据,但与BI平台的连接技术依然不成熟,无法提供高效的交互式查询。于是寻找更好的方案便成为了当务之急。正好在2013年年中的时候eBay公司启动了一个大数据项目,其中的一块内容就是BI on Hadoop的预研。当时eBay中国卓越中心组建了一支很小的团队,他们在分析和测试了多种开源和商业解决方案之后,发现没有一种方案能够完全满足当时的需求,即在超大规模数据集上提供秒级的查询性能,并能基于Hadoop与BI平台无缝整合等。在研究了多种可能性之后,最终eBay 的Apache Kylin核心团队决定自己实现一套OLAP on Hadoop的解决方案,以弥补业界的这个空白。与此同时,eBay公司也非常鼓励开源各个项目,回馈社区,eBay的Apache Kylin核心团队在向负责整个技术平台的高级副总裁做汇报的时候,得到的一个反馈就是“要从第一天就做好开源的准备”。
Kylin的使命是超高速的大数据OLAP(Online Analytical Processing),也就是要让大数据分析像使用数据库一样简单迅速,用户的查询请求可以在秒内返回,交互式数据分析将以前所未有的速度释放大数据里潜藏的知识和信息,让我们在面对未来的挑战时占得先机。
为什么要使用Apache Kylin
自从10年前Hadoop诞生以来,大数据的存储和批处理问题均得到了妥善解决,而如何高速地分析数据也就成为了下一个挑战。于是各式各样的“SQLon Hadoop”技术应运而生,其中以Hive为代表,Impala、Presto、 Phoenix、Drill、SparkSQL等紧随其后。它们的主要技术是“大规模并行处理”(Massive Parallel Processing,MPP)和“列式存储”(Columnar Storage)。大规模并行处理可以调动多台机器一起进行并行计算,用线性增加的资源来换取计算时间的线性下降。列式存储则将记录按列存放,这样做不仅可以在访问时只读取需要的列,还可以利用存储设备擅长连续读取的特点,大大提高读取的速率。这两项关键技术使得Hadoop上的SQL查询速度从小时提高到了分钟。
然而分钟级别的查询响应仍然离交互式分析的现实需求还很远。分析师敲入查询指令,按下回车,还需要去倒杯咖啡,静静地等待查询结果。得到结果之后才能根据情况调整查询,再做下一轮分析。如此反复,一个具体的场景分析常常需要几小时甚至几天才能完成,效率低下。
这是因为大规模并行处理和列式存储虽然提高了计算和存储的速度,但并没有改变查询问题本身的时间复杂度,也没有改变查询时间与数据量成线性增长的关系这一事实。假设查询1亿条记录耗时1分钟,那么查询10亿条记录就需10分钟,100亿条记录就至少需要1小时40分钟。当然,可以用很多的优化技术缩短查询的时间,比如更快的存储、更高效的压缩算法,等等,但总体来说,查询性能与数据量呈线性相关这一点是无法改变的。虽然大规模并行处理允许十倍或百倍地扩张计算集群,以期望保持分钟级别的查询速度,但购买和部署十倍或百倍的计算集群又怎能轻易做到,更何况还有高昂的硬件运维成本。
另外,对于分析师来说,完备的、经过验证的数据模型比分析性能更加重要,直接访问纷繁复杂的原始数据并进行相关分析其实并不是很友好的体验,特别是在超大规模的数据集上,分析师将更多的精力花在了等待查询结果上,而不是在更加重要的建立领域模型上。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !