1.4.3 流式计算框架
流式计算是针对连续不断,且无法控制数据流速的计算场景设计的计算模型,常见的场景有搜索引擎、在线广告等。
批处理的操作对象是静态数据集,而流式计算却是对动态数据集进行处理。流式计算是一种实时计算,是利用分布式思想和方法,对海量动态“流”式数据进行实时处理,具有很强的实时性。
流式计算是一种高实时性的计算模式,需要对一定时间窗口内应用系统产生的新数据完成实时的计算处理,从而保证数据不积压、不丢失。流式计算很适合用来处理必须对变动或峰值作出响应,并且关注一段时间内变化趋势的数据。很多行业的大数据应用,如电信、电力、道路监控等行业应用以及互联网行业的访问日志处理,都具有高流量的流式数据和大量积累的历史数据,因此在提供批处理计算的同时,系统还需要具备高实时性的流式计算能力,以便帮助业务方在很短的时间内挖掘业务数据中的价值,并将这种低延迟转化为竞争优势。例如,在使用流式计算的推荐引擎中,用户的行为偏好可以在很短的时间内反映到推荐模型中,推荐模型能够以非常低的延迟捕捉用户的行为偏好以提供更精准、及时的推荐。
相比于批处理模式,流式计算具有以下特点:
①数据运动、计算不动,不同的运算节点常常绑定在不同的服务器上。(https://www.daowen.com)
②数据不止,计算不停,除非明确停止,否则没有“尽头”。处理结果立刻可用,并会随着新数据的抵达继续更新。
③无稳态数据,计算随数据变化,计算速度也取决于数据流的速度。
由于流式计算中的数据集是动态、无边界的,理论上流式处理系统可以处理几乎无限量的数据,但实际计算过程中,流式计算同一时间只能处理一条(真正的流处理)或很少量(微批处理,Micro⁃batch Processing)数据,不同记录间只维持最少量的状态。
主流的流式计算框架有Storm、Spark Streaming、Flink等。