加入收藏 | 设为首页 | 会员中心 | 我要投稿 555手机网 (https://www.555shouji.com/)- 热门手机、手机评测、云手机、手游、5G!
当前位置: 首页 > 智能生活 > 最新资讯 > 正文

双11黑科技:大数据实时计算量身定制

发布时间:2017-11-10 07:33:34 所属栏目:最新资讯 来源:手机之家
导读:数据时代,大数据计算已经渗透到了各行各业,业务沉淀数据,数据计算产生新的业务价值,大数据计算正不断地用这种方式推动业务向前发展。电商双11,商家与消费者狂欢的背后,同样离不开大数据计算带来的价值贡献,特别是应用越来越广泛的“实时计算”。 现

事实上网易大数据在实现自研流计算平台Sloth的过程中,遇到并克服了上述技术难点。网易流计算平台Sloth作为一个平台化的产品,在产品易用性、多租户隔离方面做了大量的工作。就实时计算而言,易用性是一个比较值得讨论的方面。

对于开发人员而言,写一个分布式程序比写单机程序会困难一些,而写一个分布式实时计算程序,会更难。好在业界有一些开源的流计算引擎帮助完成了不少工作,开发人员可以使用这些流计算引擎完成流计算任务的开发,他们可能不再需要关心计算任务如何分发到多个计算节点上、数据在计算节点间如何传输等问题,只需要专注于计算逻辑的开发、控制好不同计算阶段的计算并行度。

以计算一篇文章的单词数为例,一个分布式计算程序的内容可能包括三个部分,首先是用几个计算节点共同把每一行文本拆分成一个一个的单词;第二步是用另外一些计算节点去统计单词的个数(考虑到数据量巨大的情况,这里有必要用多个节点去做计算);第三步是由一个计算节点把上游各各节点算出的部分计数汇聚成一个总的计数。这样一个最简单的场景,需要开发的代码量大约是200行。实际业务场景下,数据流经的计算节点远远不止3个,计算类型也比基础的求和复杂很多,所以即使有了流计算引擎,分布式实时计算程序的开发仍然是比较困难的。再进一步看,即使开发完成了,还需要把大量的时间投入到调试、计算框架维护等方面,一旦计算需求发生变化,所有的工作都需要重新迭代一遍,这是个比较痛苦的过程。如何让流式计算程序更易编写,是实时计算平台需要去完成的挑战。

且不考虑实时流计算系统如何解决易用性这个问题,看下计算机科学发展过程中,类似问题是怎么解决的。人们希望编程可以容易一些,所以越来越多的高级编程语言被发明出来了;人们希望数据计算可以容易一些,然后就有了数据库,以及SQL语言——结构化查询语言;到了大数据时代,人们还在折腾离线批量计算的时候,就遇到的依靠计算引擎编程复杂的问题,最终通过把SQL语言应用到分布式离线计算系统上,解决了这个问题。而现在实时计算的迅速发展的现在,是否同样可以用SQL语言去解决这个问题?答案是肯定的。不过有许多细节的问题需要去推敲求证。

实时流计算中的数据流,可以理解为一张动态的数据表

上文提及了离线批量计算模型和实时增量计算模型是有差异的,当SQL语言分别作用与批量计算和流式计算时,其语义也是需要发生变化的。批量计算和流式计算最主要的区别是前者计算的数据是有限的、后者计算的数据是无限的是不断采集进入系统的。当一个SQL查询作用在一批离线数据上面时,计算完成、输出结果,这条SQL查询也就完成了。映射到流式计算,当SQL查询触发计算,它是不会结束的,因为数据在持续不断地流入,按照离线SQL的语义,SQL结束之前,计算不会输出结果,这显然不是流计算期望的效果,所以流式SQL其本质应当是定义一系列流计算任务,同时这些任务是边执行边输出计算结果的。

离线SQL处理的是静态数据表,而流式SQL处理的是数据流,SQL的计算语义(如求和、平均值、数据表连接等)作用在数据流上是否合理。理解这个问题需要做一个概念上的转换:离线SQL是把静态的数据表转换成另一张静态数据表;而实时流计算中的数据流,可以理解为一张动态的数据表(数据会不断增长的动态数据表)。不同的时刻这个数据表又不同的样子,执行SQL会得到不同的计算结果,把这些不同的计算结果像电影幻灯片放映一样串联起来,我们就得到了一张动态的结果表——流式SQL做的工作就是把一张动态数据表转换成另一张动态数据表,这样流SQL的计算语义就比较容易理解了。实时流计算系统要解决的问题就缩小到了“如何实现动态数据表的计算”上来。

流SQL引擎的自动优化是当前主要的技术突破方向

实时流计算系统的易用性,是可以用SQL语言来解决的,网易流计算平台Sloth的生产实践也证实了这一理论。用户不再需要学习各种计算引擎的编程接口,不再需要调试分布式计算程序,不再需要自己维护流计算系统,只需要把原来跑在离线平台上的SQL迁移到实时流计算平台上,就可以完成复杂的实时计算逻辑。

用户端的工作大大减少了,实时流计算平台的工作势必是要增加的,其中比较困难的部分是如何把SQL查询转化成实际的计算逻辑,实现一个支持流式SQL的计算引擎,类似数据库引擎的角色,而且就像之前讨论的,这个引擎的计算逻辑必须符合“增量计算”模型。同时为了能让实时计算结果应用到各种各样的业务场景中,计算引擎需要能够对接各种存储角色,比如数据、消息队列、离线存储等。

双11大屏只是大数据实时流计算的一种应用场景,未来会有越来越多的实时计算场景,比如除了文本计算实时化,图像、语音计算也可以实时化,在线机器学习,物联网实时计算等。实时数据以及实时流计算场景的类型都是指数增长的,实时计算引擎会面临不小的挑战。基于SQL的流式计算描述也正在向前演化,会越来越多的纳入流计算特有的属性,比如输出触发、过期数据处理、多种规则的数据窗口划分等。流SQL引擎的自动优化也是当前主要的一个技术突破方向,相信未来实时流计算会随着技术的进步,应用得跟深入、更广泛。

(编辑:555手机网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读