Spark Streaming概述

字数 707阅读 480

—————☼—————☼—————☼—————☼—————☼—————
Spark Streaming概述
Spark Streaming 初始化过程
Spark Streaming Receiver启动过程分析
Spark Streaming 数据准备阶段分析(Receiver方式)
Spark Streaming 数据计算阶段分析
SparkStreaming Backpressure分析
Spark Streaming Executor DynamicAllocation 机制分析

—————☼—————☼—————☼—————☼—————☼—————

1、流式计算分类

目前,流式计算的实现方案有如下两种模型:
⑴连续算子模型(continuous operator model),连续算子模型中数据流被表达成算子图。数据被一个算子处理后,发送给另一个算子做进一步处理,如Storm, S4等;
⑵批量流式计算模型,这类模型将流入的数据流按固定时间片分割为一系列数据块,并按时间窗口将流式计算分解成一连串短小的批处理作业,各批处理作业处理落在其时间窗口内的数据集合。如Spark Streaming,Comet等;

2、Spark Streaming概述

Spark Streaming是大规模流式数据处理的新贵,是一种构建在Spark上的实时计算框架,它将流式计算分解成一系列短小的批处理作业,扩展了Spark处理大规模流式数据的能力。其隶属批量流式计算模型, 其处理流程如下:


Spark Streaming接收源源不断的数据流,并将数据流按切片间隔(BlockInterval)进行切片,并按时间窗口(BatchInterval)将流式计算分解成一连串短小的批处理作业,各批处理作业处理落在其时间窗口内的数据集合。批处理作业以批处理的方式执行,并输出执行结果。
Spark Streaming 对数据计算的过程可以分解为数据准备和数据计算两个阶段。后序章节会就两个阶段分别进行分析。

3、 DStream介绍

DStream 是Spark Streaming中一个关键的程序抽象,表示从数据源获取持续性的数据流,并提供DStream之间的转换算子:Transformation与Output算子(分别与RDD的Transformation与action算子对应),DStream之间的的转换所形成的依赖关系类似于RDD之间的依赖。其InputDStream与OutputDStream信息会保存在DStreamGraph中(DstreamGraph在StreamingContext创建时初始化),DStreamGraph会定期生成RDD DAG,因此,DStream可以代表一系列连续的RDD,如下图所示:


另外, DStream之间的Transformation操作也同RDD的Transformation类似,属于延迟操作。

4、Spark Streaming应用示例

Spark Streaming应用程序(WordCount)实现如下:

val conf = new SparkConf().setAppName("wordCount").setMaster("local[4]") 
val sc = new SparkContext(conf) 
val ssc = new StreamingContext(sc, Seconds(10)) 
val lines = ssc.socketTextStream("localhost", 8585, StorageLevel.MEMORY_ONLY) 
val words = lines.flatMap(_.split(" ")).map(w => (w,1)) 
val wordCount = words.reduceByKey(_+_) 
wordCount.print 
ssc.start()

推荐阅读更多精彩内容