编程语言
首页 > 编程语言> > 程序员笔记|探寻流式计算

程序员笔记|探寻流式计算

作者:互联网

【技术沙龙002期】数据中台:宜信敏捷数据中台建设实践|宜信技术沙龙 将于5月23日晚8点线上直播,点击报名

一、静态数据和流数据

静态数据:为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。

流数据:以大量、快速、时变的流形式持续到达的数据。(例如:实时产生的日志、用户实时交易信息)

流数据具有以下特点:

(1)、数据快速持续到达,潜在大小也许是无穷无尽的。
(2)、数据来源众多,格式复杂。
(3)、数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储(存储于数据仓库)。
(4)、注重数据的整体价值,不过分关注个别数据。
(5)、数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序。

在传统的数据处理流程中,总是先收集数据,然后将数据放到DB中。然后对DB中的数据进行处理。

流计算:为了实现数据的时效性,实时消费获取的数据。

二、批量计算和流计算

批量计算:充裕时间处理静态数据,如Hadoop。实时性要求不高。

流计算:实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息(实时、多数据结构、海量)。

流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低,如用户点击流。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。流数据数据格式复杂、来源众多、数据量巨大,不适合采用批量计算,必须采用实时计算,响应时间为秒级,实时性要求高。批量计算关注吞吐量,流计算关注实时性。

流计算的特点:

1、实时(realtime)且×××(unbounded)的数据流。流计算面对计算的 是实时且流式的,流数据是按照时间发生顺序地被流计算订阅和消费。且由于数据发生的持续性,数据流将长久且持续地集成进入流计算系统。例如,对于网站的访问点击日志流,只要网站不关闭其点击日志流将一直不停产生并进入流计算系统。因此,对于流系统而言,数据是实时且不终止(×××)的。

2、持续(continuos)且高效的计算。流计算是一种”事件触发”的计算模式,触发源就是上述的×××流式数据。一旦有新的流数据进入流计算,流计算立刻发起并进行一次计算任务,因此整个流计算是持续进行的计算。

3、流式(streaming)且实时的数据集成。流数据触发一次流计算的计算结果,可以被直接写入目的数据存储,例如将计算后的报表数据直接写入RDS进行报表展示。因此流数据的计算结果可以类似流式数据一样持续写入目的数据存储。

三、流计算框架

为了及时处理流数据,就需要一个低延迟、可扩展、高可靠的处理引擎。对于一个流计算系统来说,它应达到如下需求:

目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自身业务开发的流计算框架。

(1)商业级: InfoSphere Streams(IBM)和StreamBase(IBM)。

(2)开源流计算框架,代表如下:Storm(Twitter)、 S4(Yahoo)。

(3)公司为支持自身业务开发的流计算框架:Puma(Facebook)、Dstream(百度)、银河流数据处理平台(淘宝)。

四、流计算框架Storm

Storm是Twitter开源的分布式实时大数据处理框架,随着流计算的应用日趋广泛, Storm的知名度和作用日益提高。接下来介绍Storm的核心组件以及性能对比。

Storm的核心组件

程序员笔记|探寻流式计算

(图1:Storm核心组件)

程序员笔记|探寻流式计算

(图2:Storm编程模型)

主流计算引擎的对比

目前比较流行的实时处理引擎有 Storm,Spark Streaming,Flink。每个引擎都有各自的特点和应用场景。 下表是对这三个引擎的简单对比。

程序员笔记|探寻流式计算

(图3:主流引擎性能对比)

总结:流计算的出现拓宽了我们应对复杂实时计算需求能力。Storm作为流计算的利器,极大方便了我们的应用。流计算引擎还在不断发展,基于Storm和Flink开发的JStorm,Blink等计算引擎在性能各方面都有极大的提高。流计算值得我们继续关注。

参考资料:

【1】http://storm.apache.org/releases/current/Concepts.html

【2】https://en.wikipedia.org/wiki/Storm_(event_processor)

【3】https://toutiao.io/posts/88a6nt

【4】https://blog.csdn.net/fjse51/article/details/53886516

【5】https://www.cnblogs.com/xuwujing/p/8584684.html

【6】https://www.douban.com/note/642346037/

【7】https://www.cnblogs.com/ostin/articles/7256003.html

【8】https://tech.meituan.com/real_timedata_measure.html

【9】http://www.cnblogs.com/jiyukai/p/9471944.html

作者:姚远

来源:宜信技术学院

标签:计算,Spout,流式,元组,程序员,Storm,数据流,数据,探寻
来源: https://blog.51cto.com/14159827/2395610