ITPub博客

首页 > 大数据 > Spark > Spark Streaming编程指南

Spark Streaming编程指南

Spark 作者:mcxiaoracle 时间:2022-09-13 05:18:34 0 删除 编辑

Spark Streaming是构建在Spark Core基础之上的流处理框架,是Spark非常重要的组成部分。

什么是DStream

Spark Streaming是构建在Spark Core的RDD基础之上的,与此同时Spark Streaming引入了一个新的概念:DStream(Discretized Stream,离散化数据流),表示连续不断的数据流。 DStream抽象是Spark Streaming的流处理模型, 在内部实现上,Spark Streaming会对输入数据按照时间间隔(如1秒)分段,每一段数据转换为Spark中的RDD,这些分段就是Dstream,并且对DStream的操作都最终转变为对相应的RDD的操作。如下图所示:

如上图,这些底层的RDD转换操作是由Spark引擎来完成的,DStream的操作屏蔽了许多底层的细节,为用户提供了比较方便使用的高级API。

计算模型


在Flink中,批处理是流处理的特例,所以Flink是天然的流处理引擎。

即将流处理看作是在较小时间间隔内(batch interval)的一些列的批处理。关于时间间隔的设定,需要结合具体的业务延迟需求,可以实现秒级或者分钟级的间隔。

Spark Streaming会将每个短时间间隔内接收的数据存储在集群中,然后对其作用一系列的算子操作(map,reduce, groupBy等)。执行过程见下图:




Spark Streaming的工作机制

  • 在Spark Streaming中,会有一个组件Receiver,作为一个长期运行的task跑在一个Executor上


  • 每个Receiver都会负责一个input DStream(比如从文件中读取数据的文件流,比如套接字流,或者从Kafka中读取的一个输入流等等)

  • Spark Streaming通过input DStream与外部数据源进行连接,读取相关数据

  • 在Spark Streaming中,会有一个组件Receiver,作为一个长期运行的task跑在一个Executor上

  • 每个Receiver都会负责一个input DStream(比如从文件中读取数据的文件流,比如套接字流,或者从Kafka中读取的一个输入流等等)

  • Spark Streaming通过input DStream与外部数据源进行连接,读取相关数据


执行细节

  • 1.启动StreamingContext

  • 2.StreamingContext启动receiver,该receiver会一直运行在Executor的task中。用于连续不断地接收数据源,有两种主要的reciver,一种是可靠的reciver,当数据被接收并且存储到spark,发送回执确认,另一种是不可靠的reciver,对于数据源不发送回执确认。接收的数据会被缓存到work节点内存中,也会被复制到其他executor地所在的节点内存中,用于容错处理。

  • 3.Streaming context周期触发job(根据batch-interval时间间隔)进行数据处理。

  • 4.将数据输出。


Spark Streaming编程步骤


  • 1.创建 StreamingContext

  • 2.创建输入 DStream 来定义输入源

  • 3.通过对DStream应用转换操作和输出操作来定义处理逻辑

  • 4.用streamingContext.start()来开始接收数据和处理流程

  • 5.streamingContext.awaitTermination()方法来等待处理结束



推荐阅读:

https://baijiahao.baidu.com/s?id=1709308163038228882&wfr=spider&for=pc

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-2914333/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: SparkSQL 概述
下一篇: 应用安全浅谈
请登录后发表评论 登录
全部评论
数据方向,了解oracle ,IBM DB2 730

注册时间:2019-09-30

  • 博文量
    286
  • 访问量
    226630