大数据中的流计算

Posted 魏小言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据中的流计算相关的知识,希望对你有一定的参考价值。


什么是流式计算

当你谈起流式计算的时候,说明你当前的处境已经涉及到了大数据范畴。

流式计算是大数据计算模式之一,之外还有 图计算、交互计算,与之常对应出现的批计算,等等…

了解流式计算,首先要明确一下数据流的相关背景。

数据流

在生产中,数据产出的周期与产品生命周期一致,处理加工链路呈流状。数据像河流一样从服务起触发,流经各个环节,至服务止。

数据时序

产品架构各种玲琅满目的技术手段、业务逻辑,本质可以归结于数据的处理加工,且这些数据具备天然的时序特征。

这里有两个需要关注的时间点:事务发生、处理事务。

产品角度出发,当事务出发时,服务务必实时进行处理并及时反馈响应结果,也就是 “ 事务发生时间 ” = “ 处理事务时间 ”。但在实际成产中,处理事务存在网络、IO、程序处理、存储…等多个环节,上述两个时间点无法做到相等,这样的特征使我们的数据有了天然的时序特性。

数据的时序特性在大数据场景中显的极为明显,而在规模不足的业务却微而又微。

在非大数据业务中,由于数据规模的较小、加之运用各种手段去压缩数据处理过程,使我们称之 ” 平响 “ 、P90、P99…等各个衡量数据加工的时效指标控制在几窄的阈值范围。一般在 300ms 以内,150 - 200 ms 为适宜,越久意味着用户体验越差。

数据的时序特性可有效进行时间窗口的裁定。

数据集

基于数据流特性,可根据数据产生方式、时序特性划分为有界数据集、无界数据集。

有界数据集

数据含有一定的时间边界。可以是一天、一个小时、或者一分钟等等,在此边界内,数据存在价值。

比如,更新某天榜、周榜、月榜单,则在每天零点做前一阶段数据进行处理;或者计算 DAU\\PV,以 Hive 分区进行检索…

可简单归纳为:从某介质中取出有界数据,以某种形式进行加工后,存储至某介质。

对有界数据集的处理方式叫做批计算,常用的分布式批计算框架有 Apache Hadoop、 Spark等。

无界数据集

把时间边界广义化,或者无限拉长,数据就成了无界,数据至始至终在流动。

比如,服务的日志、Trace、画像、Ab…等等;

对无界数据集的处理方式叫做流计算,流计算的处理实现需要考虑数据 容错性、顺序性、幂等性…等等,复杂度相对较高。

目前Apache Storm、Spark Streaming、Apache Flink等分布式计算引擎都能不同程度地支持处理流式数据。

我们可以基于业务场景,结合数据时序、和 流 特性,将数据的边界进行划分,进而圈定有界数据集、无界数据集及时间窗口,进而决定计算模式,是 流式计算 还是 批计算。

主要应用场景

批计算中,进行数据积累,形成静态数据集后,非实时的进行逻辑处理,一次执行完成,适应大型离线任务:离线数据分析、离线报表…等等。

流计算中,实时处理动态数据,且持续保持执行状态,适应时效性要求高的场景:实时推荐、实时监控、实时建模…等等。

我们可把其各自应用场景归结于数据价值关系。当数据的时效性价值极高的时候,即数据价值随时间增产而衰减的场合,使用流计算,像推荐;数据的价值持续保有或其价值随数据规模的提升而变高的场合,使用批计算,像画像模型等。

批、流计算相结合

数据具有多面性,在实际生产中,批计算、流计算也可以相结合,共同提供服务支持。

  • 日志处理中,设计两条链路:同步和异步。
    • 同步链路使用流计算,提供实时服务数据监控分析、告警管理、数据快照等信息;
    • 异步链路使用批计算,提供离线画像、标签、报表、归因等服务支持;

Q&A

1、具体的处理框架可以详细介绍吗?

请关注后续博文

附录

产品闭环之一是用户反馈调研。

以上是关于大数据中的流计算的主要内容,如果未能解决你的问题,请参考以下文章

入门大数据---Spark_Streaming与流处理

大数据开发实战:Stream SQL实时开发

弄清SparkStormMapReduce的这几点区别才能学好大数据

从Apache Spark 2.3看大数据流式计算的发展趋势

深入理解Java中的流---结合Hadoop进行详解

浅谈kafka streams