TreeMind树图在线AI思维导图
当前位置:树图思维导图模板IT互联网分析方法/模型Spark Streaming——实时计算框架思维导图

Spark Streaming——实时计算框架思维导图

  收藏
  分享
免费下载
免费使用文件
弓长-张 浏览量:02024-05-08 17:14:33
已被使用0次
查看详情Spark Streaming——实时计算框架思维导图

实时计算框架功能介绍

树图思维导图提供 Spark Streaming——实时计算框架 在线思维导图免费制作,点击“编辑”按钮,可对 Spark Streaming——实时计算框架  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:6a03104f63eb68a56f127d75f235b3e4

思维导图大纲

第六章 Spark Streaming——实时计算框架思维导图模板大纲

Spark Streaming 基本概念

Spark Streaming是 Spark的子框架,是 Spark 生态圈中用于处理流式数据的分布式流式处理框架,具有可伸缩、高吞吐量、容错能力强等特点。同时,Spark Streaming 能够和 SparkSQL、Spark MLib、Spark GraphX进行无缝集成,可以从Kafka、Flume、HDFS、Kinesis 等数据源中获取数据,而且不仅可以通过调用 map()、reduce()、join()等方法处理数据,也可以使用机器学习算法、图算法处理数据。

Spark Streaming 运行原理

Spark Streaming 的运行原理。 Spark Streaming 接收实时数据流并根据一定的时间间隔将其拆分成多个小的批处理作业At,通过 SparkEngine 批处理引擎处理批数据,并批量生成最终的结果。

Spark Streaming 的输人数据会按照时间片分成一段一段的数据,时间片可称为批处理时间问隔(Batch Interval)。时间片是人为地对数据进行定量的标准,作为拆分数据的依据,一个时间片的数据对应一个RDD 实例。按照时间片划分得到批数据后,每一段数据都转换成Spark中的RDD,再将 Spark Streaming 中对 DStream 的转换操作变为对DStream 中每个 RDD 的转换操作,并将中间结果保存在内存中。整个流式计算根据业务的需求可以对中间的结果进行叠加计算或存储至外部设备中。DStream即离散流(Discretized Stream),是 Spark Streaming 对内部持续的实时数据流的抽象描述。

Spark Streaming

作为构建于 Spark 之上的应用框架,Spark Streaming 承袭了 Spark 的编程风格,已经了解 Spark 的用户能够快速地上手。使用 Spark Streaming 一般需要进行如下的操作。(1)创建 StreamingContext 对象。 (2)创建 DStream 输入源:Spark Streaming 需要指明数据源,DStream 输入源包括基础来源和高级来源,基础来源是在 StreamingContextAP中直接可用的来源,如文件系统流套接字(Socket)流和 Akka Aetors 流,高级来源包括 Kafka、Flume、Kinesis 等形成的数流,高级来源可以通过额外的实用工具类创建。 (3)操作 DStream:对于从数据源得到的 DStream,用户可以在 DStream 的基础上进行各种操作。 (4)启动 Spark Streaming:之前的所有步骤只创建了执行流程,程序没有真正连接上数据源,也没有对数据进行任何操作,只设定好了所有的执行计划,当执行“ssc.start()”命令启动流处理后,程序才真正进行所有预期的操作。

DStream 编程模型

DStream是 Spark Streaming 对内部实时数据流的抽象描述可将DSteam 理解为持续性的数据流。可以通过外部数据源获取 DStream,也可以通过 DStream 现有的高级操作(如转换操作)获得 DStream。DStream 代表着一系列的持续的 RDD,DStream 中的每个 RDD 都是按一小段时间分割开的 RDD。

对 DStream 的任何操作都会转化成对底层 RDD的操作。以单词计数为例,获取文本数据形成文本的输入数据流 lines DStream,使用 fatMapO方法进行扁平化操作并进行分割,得到每一个单词,形成单词的文本数据流 words DStream。这一过程实际上是对 lines DStream 内部的所有 RDD 进行 flatMap 操作,生成对应的 words DStream 里的RDD。因此,可以通过 RDD 的转换操作生成新的 DStream。

与 RDD 类似,Spark Streaming 也提供了一系列对 DStream 进行操作的方法,方法根据操作的类型可以分成3类,即转换操作、窗口操作和输出操作。

DStream 转换操作

DStream API 提供了很多 DStream 转换操作的方法,如 map()、flatMap()、filter()、reduce()等方法。

DStream 转换操作的方法中,大部分转换操作的方法(如map()、fatMap()、flter()等方法)与 RDD转换操作的方法类似,10种方法的用法。 transform()方法极大地丰富了 DStream 可以进行的操作内容。使用 transform()方法后除了可以使用 DStream 提供的一些其他转换操作的方法之外,还可以直接调用任意 RDD基础操作的方法。 例如,使用 transform()方法将一行语句按空格分割成单词,

DStream 窗口操作

窗口操作指的是在 DStream 上,将一个可配置长度的窗口,以一个可配置的速率向前移动,根据窗口操作的具体内容,对窗口内的数据执行计算操作,每次掉落在窗口内的 RDD 数据会进行合并执行对应的操作,最后生成的新 RDD 会作为窗口 DStream 的一个 RDD。 DStream 的窗口操作。设置窗口长度为3秒、滑动步长为2秒,输入数据流(Original DStream)在3秒内对3个RDD进行合并处理,生成一个窗口计算结果如第3秒时的窗口计算结果;过了2秒后,又会对最近3秒内的数据执行滑动窗口计算,再生成一个窗口计算结果,如第5秒时的窗口计算结果;这样的一个个窗口结果就组成了窗口数据流(windowed DStream)。每个滑动窗口操作,都必须指定两个参数,即窗口长度和滑动步长,而且这两个参数值必须是时间片的整数倍。

DStream 窗口操作常用的方法,窗口操作的方法都至少需要两个参数,即windowLength(窗口长度)和 slideInterval(滑动步长 )。

以 window()和 reduceByKeyAndWindow()方法为例,介绍 DStream 窗口操作的方法window()方法将返回一个基于源 DStream 的窗口批次计算后得到的新 DStream,如设置窗口长度为3秒,滑动步长为1秒,截取源 DStream 中的元素形成新的DStream。

reduceByKeyAndWindow()方法类似于 reduceByKey()方法:reduceByKeyAndWindow()方法的数据源是基于 DStream 窗口的。例如,将当前长度为3秒的时间窗口中的所有数据元素根据键进行合并,统计当前3秒内不同单词出现的次数。

DStream 输出操作

在 Spark Streaming 中,DStream 的输出操作才是 DStream 上所有转换操作的真正触发点,这类似于 RDD 中的行动操作。经过输出操作,DStream 中的数据才能与外部进行交互如将数据写人文件系统、数据库或其他应用中。

print()方法已在前面的示例中使用,将不再详细介绍其用法,后文主要介绍除了 print()之外的其他方法。saveAs()bjectFiles()和 saveAsHadoopFiles()方法可以将 DStream 中的saveAsTextFiles()、内容保存为文本文件,每个 batch 内的文件单独保存为一个文件夹,其中 prefix 为文件夹名前缀,文件夹名前缀参数必须传人;[sufix]为文件夹名后缀,文件夹名后缀参数可选;最终文件夹名称的完整形式为 prefix-TIME IN_MS[.suffix]。此外,如果前缀中包含文件完整路径那么该文件夹会建在指定路径下。saveAsTextFiles()方法以文本的形式保存 DStream 中的内容,可以保存在任何文件系统中;saveAsObiectFiles()方法以序列化的格式保存DStream 中的内容,而 saveAsHadoopFiles()方法则将 DStream 中的内容以文本的形式保存在 HDFS 上。

foreachRDD()方法是 DStream 提供的一个功能强大的方法,可以将数据发送至外部系统中。在使用 foreachRDD()方法的过程中需避免以下错误。 通常将数据写入外部系统中时需要创建一个连接对象(如连接到远程服务器),并使用该对象发送数据至外部系统中。在创建连接对象时应避免在 Spark Driver 端创建连接对象,在 Driver 端创建连接对象,需要对连接对象进行序列化,并从 Driver 端发送到 Worker 上,但是连接对象很少在不同机器间进行序列化操作。

foreachRDD()方法是 DStream 提供的一个功能强大的方法,可以将数据发送至外部系统中。在使用 foreachRDD(方法的过程中需避免以下错误。 通常将数据写人外部系统中时需要创建一个连接对象(如连接到远程服务器),并使用该对象发送数据至外部系统中。在创建连接对象时应避免在Spark Driver 端创建连接对象,在 Driver 端创建连接对象,需要对连接对象进行序列化,并从 Driver 端发送到 Worker 上,但是连接对象很少在不同机器间进行序列化操作。

小结

Spark Streaming是一种实时计算框架,首先介绍了 Spark Streaming 的基本概念及运行原理,然后初步讲解了 Spark Streaming的用法,为后面的编程打下基础。接着介绍 DStream 编程模型,重点讲解了 DStream 转换操作、窗口操作及输出操作。

相关思维导图模板

操作系统与计算机学科相关基础学科关系思维导图

树图思维导图提供 操作系统与计算机学科相关基础学科关系 在线思维导图免费制作,点击“编辑”按钮,可对 操作系统与计算机学科相关基础学科关系  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:c72108dcad7d456a3ace0db784f8fb9b

spark思维导图

树图思维导图提供 spark 在线思维导图免费制作,点击“编辑”按钮,可对 spark  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:42f4658dd835f991c10b2124ce186f35