阿里云数据事业部强琦为大家带来题为“流式计算的系统设计与实现”的演讲,本文主要从增量计算和流式计算开始谈起,然后讲解了与批量计算的区别,重点对典型系统技术概要进行了分析,包括Storm、Kinesis、MillWheel,接着介绍了核心技术、消息机制以及StreamSQL等,一起来了解下吧。
增量计算和流式计算
流式计算
流计算对于时效性要求比较严格,实时计算就是对计算的时效性要求比较强。流计算是利用分布式的思想和方法,对海量“流”式数据进行实时处理的系统,它源自对海量数据“时效”价值上的挖掘诉求。
那么,通常说的实时系统或者实时计算,严格意义上来说分成三大类:
ad-hoc computing(数据的实时计算):计算不可枚举,计算在query时发生。
stream computing(实时数据的计算):计算可枚举,计算在数据发生变化时发生。
continuous computing(实时数据的实时计算):大数据集的在线复杂实时计算。
增量计算
增量计算是分批,也就是batch,每个batch会计算出一个function的delta值,数据的一个delta最终会变成对function的一个delta值,最终通过增量计算达到效果。
batch => delta: f(x + delta) = g( f(x), delta )
实际上是在数据的delta值上计算的一个结果,这个f(x)我们称之为oldValue,整个function的一个oldValue从公式就可以看到,整个增量计算与全量计算和批量计算有很大的不一样的地方,就在于它是有状态的计算,而批量计算系统和全量计算系统是无状态的计算,所以这就会导致整个系统的设计思路理念和整个的容错机制会有很大的不同,相对于oldValue本批次的数据,delta作为一个输入,整体上是一个有状态的计算,它会在系统的时效性、系统的复杂性和系统性能之间去做tradeoff,如果batch里的数据量是非常少的,那这个系统表现出来的时效性是最实时的,当然,整个系统的容错吞吐就会受到影响,就是说一批次的数据量是比较少的情况下,整个的系统吞吐会比较低,整个系统的容错复杂度也会比较高,那么在增量计算情况下,它有哪些优势呢?
1. 相比以前的全量计算,中间的计算结果是实时产出的,也就是说它的时效性是很强的;
2. 我们把一个计算平摊在每一个时间段,可以做到平摊计算。整个集群的规模是受峰值的影响,双十一的峰值流量是非常大的,如果按照最峰值的流量去计算,整个服务器资源是相对较高的,如果能够把传统的计算平摊在每一分钟每一秒,实际可以起到降低成本的作用;
3. 整个数据处理链路如果放在一次Query中进行处理,也即是全部的数据在进行一个function的计算时,会大量膨胀中间结果,也就是说像Group By Count会到达200G,而增量计算可以做到中间结果不膨胀;
4. 增量计算是一个有状态的计算,在分布式领域,有状态的failover策略会跟无状态的计算系统截然不同,但是它的优势是恢复快,任务可以切成很多碎片去运行,一旦任务因为任何几台服务器的抖动而宕机,整个的恢复是从前一次有效的batch开始计算,而不是像全量计算和离线计算一样,全部要重新进行计算,当在离线计算和在线计算混合部署的情况下,这显得尤为重要;
5. 增量计算把一大块数据分批去计算,因此在批量计算里面经常遇到会一些数据倾斜问题在增量计算并不会遇到。在真实场景下,数据倾斜会对整个计算系统产生非常致命的影响,所以假设不同的节点之间数据倾斜比是1000,这个实际是很平常的,双十一的时候,光小米一家店铺就做到了很高的销售额,小米店铺和其他店铺的成交是上万倍甚至几十万倍的scale,传统的分布式计算的整个计算延时是受最慢的那个节点影响,如果把全部的数据分批次,实际上对于每一批来说,数据的倾斜度就会缓解,而且每个批次是可以并行去运行的,所以这可以大大地去降低整个计算任务在数据倾斜情况下的运行效率问题。
增量计算和流式计算应用场景
日志采集和在线分析:如基于访问日志、交易数据的BI算法分析。比较有名的像Google的统计、百度的统计,一些网站根据访问日志,会分析出各种的UV、 PV、 IPV等运营指标,有了流式计算,就可以对这些访问的时效性做到秒级、分钟级的监控,比如双十一当天,不同的店铺会通过店铺的实时访问情况来决定后面的运营策略;
大数据的预处理:数据清洗、字段补全等;
风险监测与告警:如交易业务的虚假交易实时监测与分析;
网站与移动应用分析统计:如双11运营、淘宝量子统计、CNZZ、友盟等各类统计业务;
网络安全监测:如CDN的恶意攻击分析与检测;
在线服务计量与计费管理系统 搜索引擎的关键词点击计费;
此外,流式计算和增量计算也应用在工业4.0和物联网上。
流式计算的数据特点
全文链接
http://click.aliyun.com/m/22541/
分享到:
相关推荐
阿里专家强琦在其分享的流式计算系统设计与实现的知识中涉及了诸多重要的知识点。首先是关于流式计算的概念和应用,流式计算是指对输入数据流进行连续处理的计算方式,与传统的批量处理模式相对,流式计算更注重实时...
大数据流式计算系统是应对海量实时数据处理需求而发展起来的一种新型计算模型。在现代互联网、物联网和金融等领域,实时数据的产生速度之快、规模之大,使得传统的批处理方式无法满足实时分析和决策的需求。因此,...
在原语设计方面,Hadoop中的Map和Reduce操作为数据处理提供了基础,而流式计算系统则在此基础上发展了更为具体的操作原语。 具体到系统设计,本文重点讨论了Spark和Storm两个流行的流式计算框架。Spark Streaming的...
在实际的流式计算系统中,例如 Apache Flink 和 Apache Kafka,Java 被广泛用作开发语言。Apache Flink 是一个开源的流处理框架,它支持事件时间处理,提供状态管理和Exactly-once语义,确保数据处理的准确性和一致...
根据系统的总体架构设计,本文主要从三个方面完成了基于流式计算的电信实时营销系统的设计与实现。解决实时数据的传输问题:流式计算数据处理系统需要进行对实时信息进行及时、不间断地处理。Flume从节点上实时采集...
《基于Flume、Kafka_Spark Streaming和HBase的流式处理系统设计与实现》 在当前的大数据时代,实时数据处理已经成为企业决策的关键因素。本设计旨在构建一个高效的流式处理系统,该系统整合了Flume、Kafka、Spark ...
基于流式计算的商品推荐系统的设计与实现_申建平.caj
在当前移动互联网和智能设备蓬勃发展的背景下,数据量的增长呈现出指数级的...通过合理的流式计算方案设计和实践应用,运营商可以有效地挖掘数据价值,满足日益增长的业务需求,从而在竞争激烈的市场中保持领先优势。
Apache Kafka 是大数据流式计算系统的一个典型实例。Apache Kafka是一个分布式流处理平台,具有高吞吐量、低延迟、可扩展等优点。它提供了丰富的客户端 API,支持 Java、Python 等多种编程语言。在实际应用中,...
Hadoop分布式计算机系统设计与实现 Hadoop是一个基于分布式系统的计算机系统...Hadoop分布式计算机系统设计与实现是解决大数据处理应用程序的需求的良好解决方案,提供了高质量和高效的计算功能,广泛应用于各个领域。
### 基于Zookeeper和Storm的车载流式计算框架 #### 一、引言 随着智能汽车行业的迅速发展,车载数据处理变得越来越重要。为了实时处理这些数据并从中提取有价值的信息,一种基于Zookeeper和Storm的车载流式计算...
在计算方面,流式计算系统如Apache Storm和Apache Flink能够对这些数据流进行实时分析和处理。与传统的计算模型如MapReduce相比,流式计算更加关注于低延迟和高吞吐量。这些系统通常基于事件驱动的模型,允许开发者...
总结,基于Spark的电商商品智能分析系统结合了流式计算、推荐算法和关联规则分析,实现了一套高效、实时的智能推荐系统。同时,它也是一个优秀的学习资源,适合IT专业人士和学生深入研究大数据分析在电商领域的应用...