首席数据官

Hi, 请登录

双11黑科技揭秘:大数据实时计算如何为你量身定制?

数据时代,大数据计算已经渗透到了各行各业,业务沉淀数据,数据计算产生新的业务价值,大数据计算正不断地用这种方式推动业务向前发展。电商双11,商家与消费者狂欢的背后,同样离不开大数据计算带来的价值贡献,特别是应用越来越广泛的“实时计算”。

现实世界中,数据连续产生,并被实时采集和计算

我们要做数据计算,挖掘产品商业价值,首要解决的问题是数据的问题。现实世界里,数据往往是随着时间的推进连续产生的,比如用户浏览商品,一系列的鼠标点击操作,会产生一连串的后台数据;开车使用手机导航,GPS定位每隔一段时间更新一次,也会不断产生日志数据;用户浏览新闻推送、搜索歌曲、监控摄像头定时采集图片上传到云端存储、视频直播等等场景,这背后生成的数据都是连续产生的。连续产生的业务数据,又被实时采集起来,就形成了数据流。

流式数据一经采集,就可以立即参与计算,同时将计算结果投入到业务应用中,这就是实时计算。实时数据计算其实早已经进入到人们生活的方方面面了,比如天气预报,以前人们的习惯是每天接收一次天气预报信息,现在则可以实时查看天气预测,同一个时间点的天气预测会随着时间的接近越来越准确,这就是监测数据采集更新及实时数据计算带来的效果。

根据兴趣量身定制,实时计算让产品越来越了解用户

实时数据来源越来越多、数量越来越大,每年的数据量都在成倍地增长,这对实时计算本身是利好的,可以有更多的应用场景、更好的应用效果,还可能促成一些革命性的变化。那么,大数据实时计算还能做什么?

在网易,考拉海购双11、618海淘盛典等活动期间数据可视化效果图,都会有一块网易有数大屏幕实时展示当前最新的销售总额、每个商品品类的销售比例、订单增长趋势、活跃用户地理位置等,各种维度的信息都在一块屏幕上不断跳动。每个用户每笔订单所产生的影响都会实时更新到大屏上。这种可视化的实时应用效果,除了增添一份电商狂欢节的氛围,更易于发现数据价值数据可视化效果图,指导市场运营、辅助商业决策。

音乐 可视化效果_大数据 数据可视化_数据可视化效果图

金融风控是另一种典型的实时计算应用场景。对金融业务这种风险敏感的业务来说,仅仅能把数据可视化是远远不够的,它需要流计算系统能够利用一些风险模型的匹配规则,去实时分析海量的用户行为数据,发现异常事件、判断风险等级,并作出相应的风险控制措施,自动化地去做报警通知、改变业务流程。通过实时计算做金融风控,带来的好处是更快、更准、更广。其他许多类似风控这样的事件驱动计算场景,实时计算都能解决好。

实时计算在推荐领域的应用也已经很深入了。不论是新闻推荐、音乐推荐还是读书推荐,基本都已经做到了千人千面,每个人接收到的推送内容都是根据个人兴趣偏好量身定制的。而用户的兴趣偏好,往往是通过实时数据计算不断在更新的。 以新闻推送为例,当用户点击一条条推送消息时,背后产品其实时刻在对用户的行为做实时分析,实时更新用户的兴趣偏好,不断发现用户新的兴趣点,对用户越来越了解,最后给用户推送他更感兴趣的内容。再以音乐推荐为例,如果一个用户某段时间收藏了几首悲伤的歌曲,通过实时数据分析,系统可以识别出这一信息,同时有针对性的推送一些歌曲去抚慰用户。这种场景是只有实时计算才能解决的,也最能体现实时计算的价值。

越来越多的实时计算场景会被开发出来,未来人们对“一切都在变化之中”的感受会越来越深刻。

从“先存后算”到“边算边存”,实时计算不再怕“大”数据

实时计算这么好,在实现层面应该怎么做,有哪些困难和挑战是必须解决的?

首先从整体架构看,数据计算,无外乎三样东西:数据输入→计算→数据输出。传统的计算模型,以数据库为例,是先将数据存储在一个数据表中,用户通过执行查询语句触发数据库的计算操作,最后数据库完成计算后输出结果。这种“先存后算”的模型在大数据实时计算场景下是行不通的。我们所要计算的数据很“大”,一个计算结果所涉及的源数据可能是涵盖过往一天的数据,可能是上千亿条数据记录。如果每增加一些新数据,都把所有数据都重新计算一遍,这样的开销是非常大的,最终的效果会是很“慢”,达不到实时的效果。比较合理的做法是“边算边存”,意思是数据进入实时计算系统后,不一定需要先存储起来,可以直接参与计算,而且这里的计算是把当前新增的数据在之前历史数据的计算结果上做“增量计算”,同一条数据不重复参与计算,计算完成之后,再把计算结果保存起来,供业务使用,这时数据存储的压力也小了很多。同时“大”意味着数据并发很高,每秒可能需要计算上千万条新数据,这样的计算量不是单机能承受的,所以大数据实时计算要解决好的是分布式系统架构下的一系列技术问题。

分布式实时计算面临的挑战包括很多方面。数据从采集、到计算、到输出整个过程必须做到低延迟,除了计算节点本身采用“增量计算”的模型,还要求上游数据传输模块具有很高的吞吐能力,并且具备数据缓存的能力,在大流量场景下可以起到缓冲的作用,下游输出模块也需要做数据压缩、批量输出等优化,以保证输出结果的实时性。低延迟这个大前提对实时计算系统的其他特性提出了更高的要求。比如双11凌晨0点的时候,大量消费者在同一时刻下单支付,这是涌进实时计算系统的瞬时数据量是巨大的,系统需要有强大的并行处理数据的能力,将大量瞬时流量合理分配到成百上千个计算节点,并将这些节点的计算结果汇聚到一起计算出一个总体的结果,在高吞吐的情况下仍保证低延迟。

数据可视化效果图_音乐 可视化效果_大数据 数据可视化

数据可视化效果图

从“批量计算”到“增量计算”,最具挑战的是准确性和易用性

和低延迟同样关键的挑战是准确性。“增量计算”模型和传统“批量计算”模型是有区别的,所以不能照搬过往的技术经验,否则就会有准确性方面的问题。需要考虑清楚新进入的数据如何叠加到老的计算结果上,有些场景下甚至要支持从老的计算结果中撤除部分计算值,以保证最终结果的准确性。

分布式系统中的某个节点出现故障是很常见的,实时流计算系统的故障恢复能力也相当重要,因为当故障发生时,系统必须快速恢复,否则系统的输出更新可能就停滞了,实时性也就无从谈起。同时故障发生也不能破坏“增量计算”这个模型,否则退化到“批量计算”的模型就又得不到实时的计算结果了,而且结果准确性也难以保证。

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

数据可视化效果图

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

数据可视化效果图_大数据 数据可视化_音乐 可视化效果

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

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

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

上文提及了离线批量计算模型和实时增量计算模型是有差异的,当SQL语言分别作用与批量计算和流式计算时,其语义也是需要发生变化的。批量计算和流式计算最主要的区别是前者计算的数据是有限的、后者计算的数据是无限的是不断采集进入系统的。当一个SQL查询作用在一批离线数据

试看结束,如继续查看请付费↓↓↓↓
打赏0.5元才能查看本内容,立即打赏

来源【首席数据官】,更多内容/合作请关注「辉声辉语」公众号,送10G营销资料!

版权声明:本文内容来源互联网整理,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jkhui22@126.com举报,一经查实,本站将立刻删除。

相关推荐

二维码
评论