我给大家带来的演讲内容是关于“使用超大规模数据分析技术支持大数据预测”这方面的。首先介绍一下我自己,我叫韩卿,很多人叫我Luke。我是Kyligence公司的联合创始人兼CEO,Apache Kylin开源项目的创始人,同时也是这个项目的项目管理委员会主席,以及Apache软件基金会会员。
一、超大规模数据分析的挑战
Hadoop
首先,我想和大家分享一下我们在大数据技术领域碰到的挑战,这里在座很多朋友都是从传统的数据仓库出来的,事实上以前是没有Hadoop的,因此数据并不是很大,我记得在07年、08年的时候,那时候说沃尔玛是全球最大的数据仓库,数据量是几个PB。那么如今又是怎样的量级呢?我原来在ebay工作,今年年初的时候ebay的整个Hadoop数据量已经超过几百个PB了,但这还不是最大的。由此可以看出,在这短短几年之间,数据的膨胀是相当大的。
Hadoop平台今年正好是第十年,发展到今天,它非常擅长批量处理,这里大部分的企业都用它做过批量的东西。那带来的第一个问题是什么呢?比如说,我的数据已经在Hadoop上面了,那么后面不管是报表分析、交叉分析还是预测分析,是不是也应该在平台上面直接去做?但现实告诉我们,由于各种各样的挑战,很多时候在Hadoop上面把数据处理完又被扔回到数据仓库里面了。
传统的数据仓库非常擅长大型的交互式分析和复杂分析,但它面临的问题是如此庞大的数据无法全部储存在里面,或者说如果存下如此大量的数据,它的成本是很恐怖的。我们在ebay的时候做过一个测算,在传统数据仓库上面每TB的存储成本远远超过在Hadoop上面每PB的存储成本,这是基于我们投资成本算出来的。一个TB和一个PB相差1024倍,如果说我们将在Hadoop上面的200多个PB的数据都放在传统数据库上面,那肯定是不现实的。至于我们该如何在Hadoop大数据平台上将分析能力提供出来,是我们当时面临的巨大挑战。
数据挖掘与数据预测
另外,在数据挖掘、数据预测的时候,这个需求非常的旺盛。以前人们更多的是说要做一个报表,而这两年人们倾向于建立一个系统,进行风控控制、数据预测、挖掘等。但这又引出了一个问题:这么大的数据量我怎么能够在最快的时间内提供给你完整的分析结果,能够满足你在具备传统数据仓库经验能力的情况下又能够利用大数据的平台进行工作,我觉得这是我们今天面临的巨大挑战。
二、Apache Kylin快速分析解决方案
在ebay工作的时候,我们发现在Hadoop上面如果直接进行分析是不可能的,因为我的分析师不可能花费很长时间去等一个分析结果。如果说我们把数据都放到DW里面也不能现实,至少成本上面是不可接受的。所以导致我们那时候探索了很多这方面的技术,无论是商业的技术,还是开源的技术,最终发现没有一个技术能够满足我们的需求,这件事情发生在2013年9月份,是三年以前。
所以后来我们在上海的几位同事想要不自己试试看,我们的架构师真的蛮厉害的,在9月份做出的决定,国庆节回来就说跑通了,当然我们也花了很多的力气去说服管理层、说服我们的客户以及合作伙伴。
这里面解释一下,这个项目叫做Apache Kylin,也是我们目前活下来的唯一项目。Apache Kylin这个名字在Apache软件基金会里面也是唯一一个中国来,我们觉得还是蛮骄傲的。
我们完全可以说在开源领域里面我们是NO.1的OLAP on Hadoop的解决方案。这里澄清一下,我们做的并不是SQL,我们做的是OLAP on Hadoop,叫做多维分析或者更大一点叫做数据集市。今天只要搜索这样几个关键字,不管在谷歌还是百度上面,基本上我们都是NO.1。
整个社区发展是非常快的,我们这个社区活跃度非常好,以及有一百多家公司了。最重要的是这是唯一一个来自中国的顶级项目,这意味着我们的项目跟Apache的Hadoop是一个级别的,是中国开发者社区的代表。Apache孵化器的副总裁,也是我们的导师,当时我们刚刚加入进去的时候,整个社区对我们并不看好,说欢迎中国人过来玩,但不觉得你们能毕业。
但当我们花了11个月毕业,并成为顶级项目的时候,整个社区对我们的认可度是非常高的。说我们代表了整个亚洲国家,特别是中国人在整个开源社区的贡献、参与度。我想告诉大家的是,整个核心团队并不多,其实就几个人,大部分核心团队现在都在我们公司,后来我们从ebay出来了,看到这样一个机会,我们成立了一家创业公司,希望在社区能够做更多的事情。
Apache Kylin的技术
那么,我们用什么样的技术来解决问题呢?无论是并行计算、还是列式存储,如今行业里拥有许多不同的技术,而Kylin则结合了这些技术的优点。
首先我们应用了并行计算。传统的数据仓库、BI的工具之类的以前都是很小的,不能够支撑单个文件超过2个G的,或者还有一些说不能超过多大的数据量。我们在ebay的时候曾经用了另外一个BI工具,单个不能超过20亿的数据,因为把里面的算法写死掉了,没有办法改。而今天我们能够大量地利用并行计算Hadoop这样的技术做并行的处理,所以相应的能力、计算的速度、效率那是指数级增长。
中间是空间换时间。这是最根本的设计理念,当你海量数据进来的时候,你的查询相对来说是比较固定的,或者相对来说原始数据百分之七八十或者九十不会再动了,我有理由帮你做一些这方面的预计算。
列式存储。另外一块,即使算完了,如果还是放在磁盘上面是不够的,因为磁盘效率很低,放内存,内存又很贵。而通过列式存储的方式,就能大大解决这一问题。
技术核心
我们的技术核心其实非常简单,叫做用空间换时间。因为你实时算这个东西的时候,实在是太慢了,我们当时碰到的给我们的数据级、测试数据级都是一百亿以上的规模的,但今天我们能做到的数据是千亿、万亿规模的。我经常举一个例子,好比你中午吃饭,如果从买菜开始到菜买回来洗好,电饭煲插上,吃好洗碗,两小时肯定不够。怎么办呢?前一天晚上把饭做好拿过来,今天微波炉一热,就能大大节省了午饭时间,这就是预计算能够带给你的。
另一方面,我们非常Care查询阶段。非常重要的数学,一旦进行预计算之后,这个地方的查询复杂度是O(1),给定的条件之下,不管你数据级有多大,查询都可以保证在一定的范围内达到秒级别,数据再大也没有关系。
但其他的一些并行计算也好、列式存储也好,是一个分布式实时计算,不可避免带来的算法复杂度是O(N)。我们通过预计算带给大数据分析技术最核心的价值,跟你的数据量并没有关系,并且满足你在各个场景下的访问。
架构
简单讲一下架构,整个Hadoop生态圈里面,Kylin用了Hadoop组件,也可以做整个预计算。当整个计算结束之后,所有的分析应用、查询应用、挖掘应用会像数据库一样,通过标准的SQL访问,我们的系统会非常精准地知道你给我的查询结果在哪里,马上可以把这个结果反馈给你。当然我们也在做更深的研发支撑更多的条件,我们在上面支撑的是标准SQL,所以就像数据仓库一样的,这也是我们的定位,希望未来做成一个数据仓库Hadoop的解决方案。
讲一下细节,第一个怎样利用并行计算,如果给一百亿的数据靠一台电脑去计算,不知道要算到什么时候,但如果有一百台、一千台机器就很快了,这是并行计算带来的威力。我们的预计算的好处是,通过Hadoop MapReduce来做并行计算,这个计算,第一很快,同时产生的成本并不高,这是利用并行计算。
算完之后存哪里?转化成列式存储,把一个传统的模型结构,充分利用HBase列式存储的组件达到性能,所以说我们的数据最终在HBase每个节点上面是均匀分布的。最后已经没有SQL的问题了,而且已经全部转成了Kb value。今天基本上你给我一个SQL,就可以给到你结果。
结果
给大家看我们做到的结果,我用了四个字:多、快、好、省。
——“多”,我们支撑的数据量非常大,在ebay单个cube已经超过千亿规模。
—— “快”,是指达到的查询性,90%的查询性是在1.18秒内。包括百度的百度地图、百度导航的数据都在上面。这里分享一下,最大的来自广东移动,广东移动数据非常大,如今4G、移动互联网非常火热,相应的数据都在里面,进来的数据每天增量超过一百亿条,这个系统运行快一年了,基本上超过万亿规模,每个查询都可以在秒级返回。另外,美团整个外卖数据也都在上面,95%查询在1秒以内。重要的是说,我们所使用的硬件成本是很低的,就是普通的机器。如果用内存机器或者传统的数据仓库、一体机等等,这个成本是呈指数的。
——“好”,这方面就不多说了,国内、国外有非常多的公司都在使用。
——“省”,大数据平台上面是一个开源的技术,最重要的是这还是一个国产技术。我们在唯品会的一些技术已经在迁移,把传统的国外的这些数据仓库的技术迁移到今天我们这样一个国产自主的,在大数据的平台上的技术上面,而且成本将会大大降低,这对客户的价值是非常大的。另外一个“省”的很重要的原因是,我们把建模过程封装的非常好,使用的时候对于开发人员、应用人员要求很低,懂数据库、SQL就够了,不需要写任何JAVA的脚本,不需要写任何的程序。我们希望我们在这方面做更多的工作来降低整个大数据的门槛,来快速的为客户提供价值。
下面是不完全的全球用户的简介。ebay就不说了,微软,包括来自德国的,来自美国的都有。最重要的是在中国有非常多的互联网公司,包括京东、网易、美团、百度、唯品会等等,以及像OPPO、魅族、乐视这些手机厂商,还有联想、国泰君安、三大运营商,我们都有很好的案例,而且使用的规模都是非常大的。
我们说每个成功的开源项目后面都有一个创业公司,以往这些公司的故事都发生在美国,而我们这家公司在中国,在上海。
解释一下这个公司名字的议程,我们的公司叫做Kyligence,来自Kylin+Intelligence,我们希望把一个神兽带到大数据生态圈里面,整个大数据里面都是动物,而我们希望我们的神兽变得更加智能一点。
三、对大数据预测技术的支持
有了这样一个基础以及数据技术之后,谈一下对于大数据预测技术我们的想法,怎么来支撑、怎么让我们用户做一些应用?
首先我们看一下最重要的,我们在千亿规模上面做到亚秒级的查询延迟。不管做预测也好,做什么也好,最重要的是要快速的获取数据的能力,特别是预测,不断地迭代,我们能够支撑到不管你改变任何的查询条件,我可以非常快的把这个查询给你。很多时候做预测工作,其实是在不断地换参数,但相对的下面的数据模型很多时候是固定的或者相对固定,我们能够有这个能力,无论你给我几个参数,或是换参数,马上就给你结果级。上层应用,基于这个结果级进一步的通过算法做演算、调整。
另外一个很重要的是我们支持的是标准SQL,很多时候现在的技术是要你自己写程序的,这要求的入门门槛太高了,但是通过标准的SQL,我们在传统的数据库里面有非常多的模型与算法是可以使用的。
对于整个技术的支持来说,我们为上层数据应用、挖掘应用提供的接口是ODBC、JDBC、REST API。所以跟你用一个传统数据仓库其实没有任何区别。最重要的是,我们能够在非常大的规模的数据上面直接把这个给到你,不管你原来的数据是一百亿、一千亿、一万亿,你要拿的东西往往是那么一点点,拿到关键的几个数据就够了。
今天来说,对于未来我们看到大数据预测应用越来越多的变成在线应用。在线对这个底层数据仓库带来的最大压力在于并发,传统的数据仓库在并发上面都是上不去的,都有很大的问题。今天可以做到互联网级别的高并发应用了。我们有能力为这些分析应用、预测应用提供高并发的快速分析能力。
四、去哪儿案例分享
非常简单的介绍一下去哪儿的案例,去哪儿在做机票订单、酒店等等,跟携程非常像。中间是订单,有代理商、公司、各种各样的信息。它把数据都放到Hadoop之上,中间一层是Kylin,把下面的数据做了加工之后,处理好,按照数据模型建立起来。上层应用通过相应的数据挖掘界面,以及其他的一些SQL的工具就可以访问后台了,访问中间一层可以看到不同的维度、不同的指标等等,千万级的查询速度。它的应用基于一个数据模型可以做各种各样的分析,就能够预测一下卖的好不好或者什么地方有问题。
至于我们公司,我们在开源之上,并且还在持续的投入做开源社区,非常重要的是我们百分之八九十的工作还在发展开源的技术,提供一些企业级的产品。
后面介绍一下我们整个的生态系统,我们要做一家产品和技术公司,希望在中国为用户提供纯粹的产品技术。此外,我们希望跟大数据供应商、云平台的供应商,上层供应商,以及每个行业的解决方案供应商一起壮大整个大数据生态。
本文作者:韩卿
来源:51CTO