?SparkStreaming简介
????????SparkStreaming,和SparkSQL?样,也是Spark?态栈中?常重要的?个模块,主要是?来进?流式计算的框架。流式计算框架,从计算的延迟上?,?可以分为纯实时流式计算和准实时流式计算,SparkStreaming是属于的准实时计算框架。
????????所谓纯实时的计算,指的是来?条记录(event事件),启动?次计算的作业;离线计算,指的是每次计算?个?常?的?批(?如?百G,好?个T)数据;准实时呢,介于纯实时和离线计算之间的?种计算?式。显然不是每?条记录就计算?次,显然?起离线计算数据量?的多,怎么表示?Micro-batch(微?的批次)。
????????SparkStreaming是SparkCore的api的?种扩展,使?DStream(discretized stream or DStream)作为数据模型,基于内存处理连续的数据流,本质上还是RDD的基于内存的计算。
????????DStream,本质上是RDD的序列。SparkStreaming的处理流程可以归纳为下图:
?SparkStreaming基本?作原理
????????接收实时输?数据流,然后将数据拆分成多个batch,?如每收集1秒的数据封装为?个batch,然后将每个batch交给Spark的计算引擎进?处理,最后会?产出?个结果数据流,其中的数据,也是由?个?个的batch所组成的。
????????Spark Streaming提供了?种?级的抽象,叫做DStream,英?全称为Discretized Stream,中?翻译为“离散流”,它代表了?个持续不断的数据流。DStream可以通过输?数据源来创建,?如Kafka、Flume、ZMQ和Kinesis;也可以通过对其他DStream应??阶函数来创建,?如map、reduce、join、window。
????????DStream的内部,其实?系列持续不断产?的RDD。RDD是Spark Core的核?抽象,即,分布式式弹性数据集。DStream中的每个RDD都包含了?个时间段内的数据。
?????????对DStream应?的算?,?如map,其实在底层会被翻译为对DStream中每个RDD的操作。?如对?个 DStream执??个map操作,会产??个新的DStream。但是,在底层,其实其原理为,对输?DStream中每个时间段的RDD,都应??遍map操作,然后?成的新的RDD,即作为新的DStream中的那个时间段的?个RDD。底层的RDD的transformation操作。
????????还是由Spark Core的计算引擎来实现的。Spark Streaming对Spark Core进?了?层封装,隐藏了细节,然后对开发?员提供了?便易?的?层次的API。
????????
?
|