Kyligence AI 服务 - 让大模型完成准确、可靠的数值计算和回答! 立即了解更多

【演讲实录】Kyligence CTO 李扬:如果数据是燃料,分析就是引擎

李扬
2018年 7月 16日

今天我的主题是 “如果数据是燃料的话,分析就是引擎”,这句话我个人非常喜欢。


刚刚大家举了很多的例子,说如果要把数据分析的价值发挥出来的话,我们需要强力引擎,而如果我们能够用技术把这种强力的引擎提速十倍,乃至百倍、千倍,它的影响力将会是非常非常大的,对各个行业、领域和战线都将带去巨大的变化,可以说虽然这是一些小的技术点,但带来的效果会类似于当初工业革命所带来的效果。

现在,数据已经摆在我们面前,怎样挖掘出价值?

上一场演讲中(Luke演讲实录链接)已经说了,我们的Kyligence Enterprise v3.0把大数据查询的能力提升了15倍,接下来,我们讲一讲具体是怎么做的。

首先,我们将我们的产品与Spark SQL v2.2 做了一个性能测试对比。讲这个测试前,我先讲讲为什么是Spark SQL v2.2,因为Spark的这个最新版本对比老版本,查询性能本身就提升了3到10倍左右,在现在比较流行的技术以及开源技术中,如果说Spark SQL的性能是第二位的,我相信不太好有别的技术说自己是第一位的。那我们要比就跟“班里”的好学生比。

我们用标准的TPC-H测试基准进行了一轮测试,TPC-H测试基准在数据的发布领域非常经典、非常流行,这个测试用到3亿条记录、50G的数据,我们很公平地把两个系统都调优了一下,得到了现在的结果。


图中黄色柱状是代表Kyligence Enterprise,灰色柱状代表Spark SQL v2.2的速度,相比Spark,Kyligence Enterprise的平均速度提升了15倍。

为什么Kyligence Enterprise的性能能够达到这么高的水平?

关于这个,我们首先要谈到Apache Kylin的前一代技术框架。尽管Kylin是一个分布式查询引擎,但是它在主节点上是一个协调和查询节点,在整个的查询过程当中,其实是性能的单点,因为是一个单点所以理论上性能会存在比较大的问题,但之前为什么体现得不明显?是因为Kylin对数据做了非常好的优化和计算,它可以把大部分的计算都分布到一些可扩展的平台上去。

但是在那些最复杂的产品和查询条件下,包括TPC-H这种相当复杂的查询测试技术,Apache Kylin单点的性能就凸显出来了。我们对这一问题做了很大的突破,Spark是一个并行的计算框架,我们引入了Spark来作为我们产品的基础,从而打破了前面说到的单点性能瓶颈的问题,使得我们的性能又有了一次巨大的提升。


引入Spark的同时,Kylin的技术还是基础的,除了Spark和Kylin这两个主流的技术之外,行业内其它最主要的高性能产品都有并到Kylin产品中去,包括列式存储、动态代码生成以及CPU指令的矢量计算,把这些一流的技术融合到一起,我们才得到了新一代的产品——Kyligence Enterprise,也就是刚才看到的速度的提升。

讲完了技术,要讲一讲存储。

其实存储跟性能是非常相关的指标。如果大家感受还不深刻的话,我给大家举个例子,美剧《硅谷》有个桥段,里面的主人公突然想到了行业突破极限的压缩算法,把下一个级别的压缩能力带到了技术领域,最后带来了一系列非常巨大的商业价值。

如果这样说还不好理解的话,我再给大家举个例子:最早的时候互联网只能传一传图片,但是当数据被进一步压缩以后,我们就可以看到视频了,再进一步压缩了以后,不仅是预先录制的视频,直播以及视频对话等当面聊的技术也能实现了,这就是技术带来的进步,存储和压缩性能提升带来的好处。

Kyligence Enterprise创造了一种新的存储压缩技术,这个压缩技术和前一代技术相比,能够节省50%的存储空间。当然,这里是多至50%,因为我们的测试量还是看数据集的,具体测试的数据集规模不一样,如果是小一点的数据量如6个GB的数据,在新一代的产品上就只需要3.2GB左右的空间,稍微大一点的比如17个GB的数据也可以被缩小到8.1个GB,再大一些的如242GB,可以缩小到141GB,所以预期是有50%的数据压缩能力的提升。


这不仅带来了数据容量存储成本的好处,我们知道数据小了以后,不仅空间小,并且传输速度快,写数据的性能也会有所提升,且计算的时候,带来的开销也会变小,好处非常多。

存储节省50%背后工作原理是什么?

必须解释一下Kyligence Enterprise背后的工作原理。我们参考了最近几年的信息,在几十种压缩方法中找到了一种比较适合我们结构的压缩算法,于此同时,我们又引入了更加紧凑的存储结构。如果要做个比方的话,大概就是右下方的感觉,数据更紧凑了以后,它的压缩能力提高了,这两项技术在一起,我们所创造的就能达到前面说到的50%的压缩空间。


前面说过融合查询的统一入口,我们需要再展开说明一下后面的原理大概是怎么样的。


首先,这是一个入口,我们在产品层面希望这个入口不仅能做以前Kylin技术擅长的聚合查询,也希望它能做明细查询,除了做MOLAP之外还能做ROLAP,除了能做固定的报表,也有能力帮助分析师做灵活的探索。

我们看看是怎么做的,这里有两个重要的概念,一个是叫做联合查询引擎,第二个是智能路由。在新一代的系统里,我们有一个传统的高聚合查询引擎,还有新的MPP查询引擎,有明细的查询引擎,还有ROLAP下推查询引擎,四个不同的模式同时在一个系统当中。

在这几个引擎之上,我们有一个“智能路由”模块,它会根据用户的查询来动态地决策它更适合哪一种执行引擎。如果是简单的高聚合查询,那它就会推去高度聚合查询,如果是明细的话,就是明细查询。最后如果这个查询不能被任何的预处理所加速的话,我们把它带到ROLAP下推式的查询里去,这个下推的过程可能会慢一些,但是比较有效。

这些技术放在一起所产生的效率是非常高的,用户无论怎么查询,在大多数的时候就像这蓝色区域所展示的一样,大多数的查询都可以获得加速,在秒级内达到大大提升用户查询效率的效果。

全新的智能AI自动建模系统

再一个话题是产品的重点——全新的智能AI自动建模系统。前面其实大家都能看到,我们TPC-H的15倍性能提速就是通过机器自动学习产生的。

首先,使用TPC-H的查询来计算出最合适的模型,不光能最大程度的提升速度,同时还能减小预计算。我们通过实际的性能测试来得到的15倍提升性能的数据,这背后的大致原理相对比较枯燥一些,我们先来看一看预计算问题的规模大概怎么样的。


知道原理了我们就知道预计算模型可能的搜索空间大概是2的N次方的状态,这个指数级问题的复杂度带来什么后果呢?打个比方,如果这里看到的是4个维度的话,它就只需要16种组合,但如果是270个维度的预计算空间的话,它约等于宇宙原子数。Alpha Go 前阵子比较火,求解围棋问题时它的状态空间和规模是3的361次方,这个数字是远远大于宇宙当中的原子总数。

对于Kylin的预计算来说,如果我们的维度达到了570的时候,它的预计算规模大概等于围棋的搜索空间,是这么复杂的程度。

在这样难的问题下面,我们需要的是一种智能的学习方法,这里边用到的是典型的强化学习,在这典型的算法里特色是首先没有监督者,不需要事先要求好的分类样本,其次它是有一个滞后的延迟,当一次学习规划完成之后,我并不能马上知道我这次优化的程度,可能需要新的两三天的查询,我再来统计在新模型上面查询的性能状态,才能得出我这次优化的实际收益是多少。


它是一个追求极大化的一种学习模式,这是可以强化模型的学习模式特点,它有它的好处,就是不需要老师,没有监督者。它也有它的缺点,学习的时间比较长。对于预计算的模型里来说,在这里,我们学习的环境,就是用户的历史查询记录。

Kylin系统会根据用户每一次的查询来推断出、决策出如何用最小的成本和最少量的计算来最大化的加速。

推荐出来的结果就是以下的模型,模型会回馈到查询生产当中,大概是这样循环的过程。这里会谈到整个学习系统特殊的强化和学习系统里的难点。


首先,它是非常难计算的,包括加速的比例,还有实际的预计算、开销都只是估测,很难完整地准确计算出来。其次,这个模型的决策也相当的复杂,它大概分为启发、探索和开发三个阶段,这边我就不一一展开了,这是一个自适应性强化的学习计划。

在用户看来,一个好的产品,就是把这些复杂度都包装到产品里去,用户只需要简单地使用,就像之前描述的那样就可以。

Kyligence Cloud

我们最后聊一聊云端产品Kyligence Cloud,我个人还是相当相信和非常喜欢云上技术的发展方向。尤其是以大数据为例,它推广中的大难点就是它的基础建设成本很高、周期很长,如果我们企业要来管一个大数据平台,可能需要投入几千万,而且搭建的周期也很长,而且这都是非常正常的事情,这极大地阻碍了大数据技术的推广和发展。


但是云是个很好的解决方法,很复杂的大数据系统架构在云上的落地是一种唾手可得的状态,也就是我们这次聊到这些复杂的技术在云上对用户来说变得平易近人——钱还是要花的,但你把钱放在云上服务,只要轻轻点击,就能把整个大数据服务的系统能力都带给你。

从技术角度来讲,它的其中一个亮点是以成本和性能为目标的自动升缩,因为硬件都是虚拟的,我们可以非常准确地根据你的用量来调整资源,同时也能降低成本。比如典型的商务系统它的交易在中午时需要最多的计算资源,但是在早上晚上虽然也有业务,可是相对少一些。在云端虚拟的集群管理当中,就可以利用这一点在早晨和傍晚适量降低计算资源,这是一个典型的云上自动升缩管理。


对于Kylin还有一个特别的升缩场景是做构建的时候,在云上的好处是可以在构建的时候,一下拓展出一个新的集群,它可能是有两百台、三百台即时的虚拟平台,可以极大地加速运行,而且在完成之后,这两百台、三百台就会不再产生费用,这是非常有特色的。尤其是像亚马逊的EC2 Spot,有用户反馈告诉我,使用了自动升缩以后成本减少了50%。

不过,我们希望在这个技术合理地应用以后,可以节省70%的成本。

关于云的安全性

最后要聊到云的安全性,把数据放在自己看不见的地方,始终是要有顾虑的。这点在国外走得更前面一些,我相信国内也一定会慢慢做起来。

尤其是在我们的产品线来说,首先我们会把数据放在高可靠性的云端组织里,有很多的备份不会丢失,并且数据是按用户的账户来隔离,只有在您账户下面有权限的公司内部人员才可以拿到数据。我们也提供企业级的专属安全性,能够提供到行级和列级的粒度。

最后简单谈一谈我看到在将来半年到一年里应该去做的一些事情。比如性能方面,我还是希望能够再提升到100倍,比其他技术能跑得更快更多。


同时我也看好在存储技术方面会有更多的发展空间,至少在我们的实验室里认为存储空间还有进一步压缩的空间。

在智能化方面,我们会来迎接全自动的运维,虽然建模的整个过程是非常流线型的形态,但是用户还是需要一些交互,有些用户相信整个系统能自我调节,不需要人来干预的时代会比较快地到来,我们会在这方向上持续地努力。

然后是云端,目前数据还是大公司的私有物,希望随着技术的进一步进步,数据能够回到每一个人的手里。现在不光是企业,每一个人都可以用最好的技术来做大数据分析,而且我相信也一定会是出现在云端。

对企业来说,最大的利好就是应用,所以说“如果数据是燃料的话,分析就是一个引擎。”一旦这个引擎十倍百倍的提速,带来的就将是一个革命性的效应,可能就类似于工业革命,不仅是技术方面的突破,还会辐射到整个商业圈,届时,这个大数据的技术进步一定会成为商务的核心,而不仅仅是现在互联网少数的几个行业领域上。

这就是我全部的所讲,谢谢大家。

添加企微

kyligence
关注我们

kyligence