开发者学堂课程【分布式计算入门:流式计算概述】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/375/detail/4709
流式计算概述
内容介绍:
一、增量计算和流式计算
二、增量计算和流式计算的应用场景
一、增量计算和流式计算
流式计算是一种特殊的增量计算
1.流式计算
利用分布式的思想和方法,对海量“流”式数据进行实时处理,源自业务对海量数据,在“时效”价值上的挖掘诉求。
2.实时计算
(1)ad-hoc-computing
计算不可枚举,计算在 query 时发生,提交查询的时候发生。(数据的实时计算)
(2)stream computing
计算可枚举,计算在数据发生变化时发生。(实时数据的计算)
(3)continuous computing
支持在大数据集的在线复杂实时计算。(实时数据的实时计算)
3.增量计算
f(x + delta) = g(f(x),delta)
x 是存量,之前遇到的已经处理过的数据
delta 是本次的新增数据
x + delta 作为整体计算,f = 增量计算的结果,在存量数据上已经计算出来的结果。
g(f(x),delta) 增量计算的结果,增量计算和批量计算之间应该是完全一样
f(x) oldValue状态,在本次 delta 计算前的状态
增量计算、批量计算=有状态计算
batch ==> delta 处理的数据越少,计算的时效性越强,系统的吞吐下降。
增量计算是在系统的时效性、系统的复杂性和系统的性能之间不断的做 tradeoff 。
优势:
大家可以关注到阿里巴巴双十一鸟巢中的实时大屏,这个结果是随着事件不断更新的实时产出。如果是用批量计算或者离线计算,只会是十一月十一日做完了才会得到结果。
即便是相同的计算也可以用增量方法去运算,这也会带来一些好处,比如说计算每天的GMV,用传统的批量计算会等到每天的0点或1点数据全部 ready 的情况下去运算,负载压力:1点→6点,7点→8点出结果,1点→5点特别高,平时很低。
整个集群的规模:受峰值的运算压力所决定。
双十一的流量可能是平时流量的数倍或者数十倍,那么采购机器的时候是需要根据双十一的峰值去采购的,而这些机器在平时是用不到的。
如果将这些运用变成增量计算, delta 数据来一批计算一批,很明显的好处是将时间的负载平摊在每二十四小时里面,平摊在每一分钟里面。
如果把整个计算量看做一个矩形或者一个梯形,它的阴影是整个学校的计算量。那么传统的批量计算,它是会集中在少数时间内把它寄上来,所以整个高度就非常高,也就是说需要的机器的数量会非常大。
那利用增量计算完全可以把这个宽度拉宽,相同面积下,所需要的这个高度(也就说峰值就比较少),那么可以达到大大节省整个集群规模的这么一个作用。
那么我们经常会在计算中发现一个问题,也就是说大规模计算系统,它的 input 、 output 是两个很重要的因素,但是实际上 input 、output 之间会膨胀出很多的中间结果。
我们会在真正的线上会发现有些任务它的中间结果甚至是 input 、output 的几十倍甚至上百倍,也就说它中间结果的膨胀是非常非常厉害的。那么中间结果大量的膨胀导致非常大量 io 的消耗,所以整个延时也会增加。
而增量计算它的好处很明显,中间计算结果在很多情况下是不需要膨胀的。增量计算是个有状态的计算,那么如果把离线计算或者批量计算机进行增量化还有一个好处,是可以把之前的状态保存保留下来,那么在整个任务要进行恢复的时候,它实际上可以从最近一次的状态开始。
所以它的好处很明显是整个容错的速度非常快,不像批量计算,要将整个数据全部进行 recomputing 。
因为增量计算是分批次计算,所以实际上它在真实业务场景中出现大量的数据倾斜的计算情况下,有较好的克服倾斜能力。假设我们的数据有10万倍的倾斜,而这个10万倍也是很普通的,双十一排名前三的店铺的成交额可能就是其他店铺成交额的十几万倍。
如果进行批量计算,不同节点的运算,有些节点可能是其他节点运算量的几千上万倍,而整个系统的性能是受最慢的那台机器所决定的。如果我们将这些数据进行分批次运算,比如说分成一千批,实际上每批的数据倾斜的程度是呈线性降低。
当然,不同批次的运算是可以并行进行,所以它可以大大降低数据倾斜对整个计算性能的退化的影响。
中间计算结果实时产出
平摊计算
中间计算状态不膨胀
有状态的 failover
批次运算
降低数据的倾斜对整个计算性能的退化的影响。
二、增量计算和流式计算的应用场景
1. 日志采集与在线分析
2. 大数据的预处理
3. 风险监测与告警
对交易业务的虚假交易进行实时监测与分析。
4.网站与移动应用统计分析
双11运营、淘宝量子统计等各类统计业务分析中,提供实时的业务统计分析报表。
5.网络安全检测
实时监控、实时分析、实时监测、实施对抗
6.在线服务计量与计费管理系统
假设一个广告系统,如果一个广告组充了1000块钱,买了这个镜架,单次点击100块钱。(当然搜广告搜索它的算法不仅根据价格,还有经过根据内容来排序。)
假设花了这个钱排序相对比较靠前,那么实际上大量的流量可能把今天给的预算例如说就是5000块钱,一下就点击光了。但是如果这个广告平台的计费是小时,乃至像之前以天为计算单位,那实际上尽管充值的钱被消耗光了,但实际上它没有统计。也就是说广告位可能还是比较靠前,那这样对平台来说其实是损失非常大。
所以实际上现在业界的一些广告系统都已经引入了实时的计量计费的监测。
7.工业4.0
8.物联网
像从去年比较火的工业4.0、IoT互联网这些场景下数据本身的实时性和计算的时间要求就非常高,那么我相信在今年乃至明年,在工业4.0和物联网实时计算、流式计算将会大行其道。