流式计算简介

1、数据的时效性

日常工作中,我们一般会先把数据存储在一张表中,然后对这张表的数据进行加工、分析。那这里是先存储在表中,那就会涉及到时效性这个概念。

如果我们处理以年,月为单位的级别的数据处理,进行统计分析,个性化推荐,那么数据的的最新日期离当前有几个甚至上月都没有问题。但是如果我们处理的是以天为级别,或者以小时甚至更小粒度的数据处理,那么就要求数据的时效性更高了。比如:对网站的实时监控,对异常日志的监控,这些场景需要工作人员立即响应,这样的场景下,传统的统一收集数据,再存到数据库中,再取出来进行分析就无法满足高时效性的需求了。

2、流式计算和批量计算

上面说到的:统一收集数据--存储到DB--对数据进行批量处理,就是我们说到的批量计算

而流式计算,顾名思义,就是对数据流进行处理,是实时计算。

主要原理是:

(1)与批量计算那样慢慢积累数据不同,流式计算将大量数据平摊到每个时间点上,连续地对小批量数据的进行传输,数据持续流动,计算完之后就丢弃。

(2)批量计算是维护一张表,对表进行实施各种计算逻辑。流式计算相反,是必须先定义好计算逻辑,提交到流式计算系统,这个计算作业逻辑在整个运行期间是不可更改的。

(3)计算结果上,批量计算对全部数据进行计算后传输结果,流式计算是每次小批量计算后,结果可以立刻投递到在线系统,做到实时化展现。

3、流式计算流程及特性

流程:

(1)提交流计算作业

(2)等待流式数据触发流计算作业

(3)计算结果持续不断对外写出

特性:

(1)实时,低延迟

(2)无界,数据是不断输出无终止的

(3)连续,计算连续进行,计算之后数据就会被丢弃

4、相关产品

Strom:Twitter 开发的第一代流处理系统。

Heron:Twitter 开发的第二代流处理系统。

Spark streaming:是Spark核心API的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理。

Flink:是一个针对流数据和批数据的分布式处理引擎。

Apache Kafka:由Scala写成。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。

猜你喜欢

转载自blog.csdn.net/u014209205/article/details/83473867
今日推荐