Kyligence韩卿:融合多种优化技术实现超高性能分析是Kylin的核心理念

易观 2016-10-29 17:07:16   13

Kyligence联合创始人兼CEO韩卿受邀出席“2016易观A10大数据应用峰会”,并参与1028日技术主论坛,发表了“基于Apache Kylin的实时OLAP实现”的主题演讲。

Kyling是中国唯一的Apache顶级开源项目,在万亿数据规模下,实现秒级/毫秒级的实时计算,韩卿表示,融合多种优化技术实现超高性能分析是Kylin的核心理念,包括:并行计算,分布式计算,横向扩展计算能力;空间换时间,通过索引/物化视图/cube,减少计算机IO吞吐量;列式存储,减少磁盘扫描范围。

对于Kylin的近实时OLAP实现现有的挑战,韩卿认为主要有四点:第一,从数据查询低延迟,到数据可达低延迟;第二,现有Cube 构建基于批处理;第三,T1模式可以满足绝大部分需求,但越来越多的业务希望做到实时或者近实时;第四,流数据源越来越多。

韩卿分享说,Kylin新的流式引擎设计目标是:第一,重用既有KylinMR/Spark构建引擎;第二,从几千条到几亿条数据,一次轻松构建;第三,可随意暂停或更改构建频率;第四,自动管理集群,弹性计算资源。

以下是韩卿演讲实录:

韩卿:大家上午好!

我今天演讲的主题是基于Apache Kylin的实时OLAP实现。

由于当时的仓库智能技术已经无法满足,所以我们今天做到了万亿规模上秒级甚至毫秒级的OLAP分析,后面我会介绍一下。

我是麒麟的联合创始人,Apache Kylin简介,Kylin的近实时OLAP实现,企业级的扩展,分享一下eBay在这方面的应用案例。

关于Apache Kylin很多人应该已经知道了,这是目前完全由中国工程师贡献到Apache软件基金会的一个项目,我们和Apache Hadoop是在一个级别,所有研发人员都在中国和上海,我们非常骄傲。而且非常骄傲的一点是今年我们拿到了开源贡献奖,和Google TensorFlow一起获得该奖。更难得的是用户的认可,一个东西好不好不是我来吹,而是用户用不用。在全球我们有超过100多个实际案例在使用,而且都是非常大的,是哪些呢?大家看一下,这只是一部分,很多公司都在使用,把Apache Kylin运用在各个不同领域里面。

我稍微简单介绍几个。用户行为分析,这是最大的一块,比如百度地图、地图导航,广东移动,整个前端查询都在秒级,这是非常大的应用。包括整体的数据集市、数据仓库,还有唯品会大数据自助分析平台,还有陆金所交易管理系统等等。所以Apache Kylin已经解决了很多需求。我们来看一下怎么做到的,很简单的原因,其实并没有一种技术可以完美解决所有问题,这么多年来计算机发展就是这样的。怎么办呢?我们可以融合不同的技术,我们可以把它组合在一起来看怎么优势发挥解决掉。所以Kylin做到了,并行计算空间换时间,既然不能在非常快的时间内一下就把数据分析聚合给你,我是不是可以预先算好呢。这里的假设条件非常简单,世界上99%,甚至更高的数据,其实是不太会变的,你去年的交易数据和行为数据几乎不变,只有最近实时数据会变,后面我会变。所以我们可以把数据做预先计算放起来,下次拿的时候就直接拿到结果,空间换时间,这是计算机领域里面最经典的一种办法。其实在OLAP里面这个技术就已经用了,但是碰到什么问题呢?Down机。在eBay我们用的是另外一个工具,全球的基础架构,当时碰到的是用户要查三年数据,三年数据放进去,爆掉。还有一个问题,他完全是down机的,整个机器压力很大,或者出现网络漏洞。这也是为什么用到并行计算,并行计算带来的好处是我可以利用Hadoop集群加快计算。

举一个例子,之前我们对比过,一个用一体机的技术构建整个东西,八个小时,用我们这样的技术40分钟,带来的数据远远大于那个构成,随之而来的是数据容量非常大,今天我们已经处理到万亿规模的级别。另外,以往的存储很多是单机存储,存在文件里,再加到内存里,今天我们充分利用了列式存储,我们把它作为列式存储,这样访问的时候会更快,我们非常好的利用了所有的技术去构建Apache Kylin平台,今天能够有效解决在超大规模上做快速分析的挑战。这个是空间换时间最最基本的原理,我不多做介绍了,做数据分析的人都知道。每个分析师每个老板问你的问题一定是基于维度分析,一定是结构化的数据模型。

我怎么做预先计算,我们基于这样的模型构建整个立方体,做各种各样的组合。当然,你们可能会有一个问题,把所有的都算起来在数学上就是数字的N次方,会爆炸的。我们Kylin把这个问题解决掉了,有效降低了存储,有效避免了很多无效运算,这是为我们带来的好处。这是列式存储。另外一点,在查询的时候,Kylin计算复杂度是O1,我已经算好了,你给我同样SQL语句的时候我是拿得到的,数据量越大,超过十亿、百亿规模的时候发现任何存储都做不到,原因是给定规模的情况下,算法使得查询性能与数据集大小无关,让你的业务人员能够在最快的速度内做他的决策支持,这是最重要的。

总结一下,这是Kylin的测试报告,来自网易杭州研究院。他们拿的数据是网易云音乐,你们听网易云音乐用户的数据都在这个集群上。左边是他的查询,中间的是top20,今天看看中国人都在听哪些歌。并发上去的时候会忙的要死,但Kylin带来的好处是我们的并发非常高,我再分享一个案例,京东云平台已经把Kylin当作对外服务平台,每天的KPI非常高。看一下简单的架构图,前面是原理,他是怎么做的,全部以界面形式帮你做,意味着你用Kylin上一个大数据项目的时候大大节省成本。最上面不管你用任何的BI工具,任何的第三方工具,都可以通过标准SQL来访问,后台做交互,你可以用你非常喜欢的应用,都可以来连,我们能保证速度很快,你不需要再去写代码。

Kylin是一个OLAP,本质原因是我需要做预计算,跑批量的,问题是数据是越来越实时,老板不仅仅是掏出手机想看到报表,我想掏出手机看到过去5分钟、10分钟业务变化的情况,这又带来另外一个挑战,数据怎么实时进来。下面我介绍一下Kylin的近实时OLAP实现,明年会推实时。这里很重要的原因是OLAP用户,全实时技术很多时候你的消费者应用,比如做欺诈分析,很多时候前面数据进来的时候,你要触发下一个应用。但OLAP不是,因为OLAP的用户是人,是你的分析师,是你的老板,是你的客户,没有一个人一秒不停的盯着屏幕看东西,所以近实时能够满足99%以上的应用。

数据查询低延迟已经解决的很好了,我们要解决到数据可达低延迟。现有Cube构建于批处理,T+1模式可以满足绝大部分需求。

我们的目标是重用既有KylinMR/Spark构建引擎。从几千条到几亿条数据,一次轻松构建,不要太复杂。可随意暂停或更改构建频率。自动管理集群,弹性计算资源等等,我们全部做起来了。

为了这样的变化,我们去年做了非常大的应用,我们把所有的架构变成可插件式的架构。稍微简单介绍一下Segment技术,Segmentoffset切分,不能有重合,Segment之间允许有时间值重合,确保了数据一致性和查询准确性。我们也会处理数据晚到,带来的好处是这个数据进来之后你在分钟级就可以看到所有过程。这个是Twitter的实例,跑得非常好。隔5分钟跑一个批量,今年数据大概在几亿规模的样子,查询全部是秒级的,而且是布在国外亚马逊上,速度非常快,国外的Twitter还是很有意思的。

我们看一下eBay实例,SEO仪表盘,从搜索引擎过来转化效率更高,你搜索一个相机,点到eBay界面就下单了,每天在eBay的量超过几百亿,占eBay10%以上,转化率非常高,基本上搜索过来就要买的。很重要的是,我们不仅仅做到了,而且用分析师最喜欢的东西做到了,你可以用SQL语句去查,对分析师来说不需要改任何的东西。这是下一步,我们明年要做的很大一部分工作。

最后看一下我们企业级的扩展,Apache Kylin是开源的,这家公司完全是Apache Kylin的贡献者创造的公司,我们会通过KAP。这是存储,我们今天可以有信心告诉你们,HBase换了,全新的Spark+列式存储,我可以支撑更多的columns分析需求。举一个例子,超宽表,我们现在能够做到的是上千列的超宽表,应用场景是什么?用户画像,还有超宽的交易数据,还有IOT,我们最近在做IOT方面的POC,这是我们的测试。我的查询计算是O1的。

非常感谢,谢谢!