第2课:通过案例对SparkStreaming 透彻理解三板斧之二:解密SparkStreaming运行机制和架构

本篇博文将从以下几点组织文章:

1. 解密Spark Streaming运行机制

2. 解密Spark Streaming架构

一:解密Spark Streaming运行机制

1. DAG生成模板 :DStreamGraph

a)  Spark Streaming中不断的有数据流进来,他会把数据积攒起来,积攒的依据是以Batch Interval的方式进行积攒的,例如1秒钟,但是这1秒钟里面会有很多的数据例如event,event就构成了一个数据的集合,而RDD处理的时候,是基于固定不变的集合产生RDD。实际上10秒钟产生一个作业的话,就基于这10个event进行处理,对于连续不断的流进来的数据,就会根据这个连续不断event构成batch,因为时间间隔是固定的,所以每个时间间隔产生的数据也是固定的,基于这些batch就会生成RDD的依赖关系。
b)  这里的RDD依赖关系是基于时间间隔中的一个batch中的数据。随着时间的流逝,产生了不同RDD的Graph依赖关系的实例,但是其实RDD的Graph的依赖关系都是一样的。DStream Graph是RDD的Graph的模板,因为RDD的Graph只是DStreamGraph上空间维度上的而已。
c)  所以从整个Spark Streaming运行角度来看,由于运行在Spark Core上需要一种机制表示RDD DAG的处理逻辑,也就是空间维度,所以就产生了DStreamGraph.

2. DStreamGraph就是RDD的静态模板,来表示空间的处理逻辑具体该怎么做,随着时间的流逝,会将模板实例化。

a)  如何实例化?就是在时间间隔中用数据来填充模板,然后就变成了RDD的Graph.
b)  这个时候就需要一个感知时间,也就是所谓的动态的Job控制器,将不断流进来的数据,每流进来的数据从Spark Streaming的角度来说,他也会根据时间间隔将数据进行切分,并且按照我们的DStreamGraph的模板实例化RDD的DAG的具体实例来针对这个时间间隔产生的数据的集合进行处理。

3. 静态的RDD的Graph模板 DStreamGraph.

动态的Job控制器:它会根据我们设定的时间间隔收集到数据让我们的DStreamGraph变成RDD DAG.

4. Spark Streaming流式系统:

a)  DAG生成模板 :DStreamGraph
b)  Timeline的Job生成:
c)  输入和输出流
d)  具体的容错
e)  事务处理:绝大多数情况下,数据流进来一定被处理,而且仅被处理一次。

二:解密Spark Streaming架构


1.  Spark Streaming系统的容错是基于DStreamGraph这个模板,不断的根据时间间隔产生Graph也就是DAG依赖的实例,产生具体的作业,作业具体运行时基于RDD,也就是对于单个Job的容错是基于RDD的。
2.  Spark Streaming是一个框架,本身也有自己的容错方式,例如数据接收的太多处理不完,这个时候Spark Streaming就会限流。
3.  Spark Streaming会根据数据的大小,动态的调整CPU和内存等计算资源。比如数据多的话,用更多的资源。

DStream源码分析:

随着时间的流逝不断的产生DStream,然后根据DStream不断的产生RDD,根据RDD不断的产生Job,DStream之间有依赖关系,从源码中就可以了解到RDD的创建时在DStream中。

总结:

DStream是逻辑级别的,RDD是物理级别的。

DStream是RDD的模板,

DStream的依赖关系构成的DStreamGraph是RDD的DAG的模板。

DStream随着时间的序列生成一系列的RDD

DStream和RDD之间的关系随着时间的流逝不断产生RDD,

本课程笔记来源于:

时间: 2024-11-09 06:41:04

第2课:通过案例对SparkStreaming 透彻理解三板斧之二:解密SparkStreaming运行机制和架构的相关文章

通过案例对 spark streaming 透彻理解三板斧之三:spark streaming运行机制与架构

本期内容: 1. Spark Streaming Job架构与运行机制 2. Spark Streaming 容错架构与运行机制 事实上时间是不存在的,是由人的感官系统感觉时间的存在而已,是一种虚幻的存在,任何时候宇宙中的事情一直在发生着的. Spark Streaming好比时间,一直遵循其运行机制和架构在不停的在运行,无论你写多或者少的应用程序都跳不出这个范围. 一.   通过案例透视Job执行过程的Spark Streaming机制解析,案例代码如下: import org.apache.

第3课:SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错

本期内容: 解密Spark Streaming Job架构和运行机制 解密Spark Streaming容错架构和运行机制 理解SparkStreaming的Job的整个架构和运行机制对于精通SparkStreaming是至关重要的.我们知道对于一般的Spark应用程序来说,是RDD的action操作触发了Job的运行.那对于SparkStreaming来说,Job是怎么样运行的呢?我们在编写SparkStreaming程序的时候,设置了BatchDuration,Job每隔BatchDurat

第3课:通过案例对SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错

理解Spark Streaming的Job的整个架构和运行机制对于精通Spark Streaming是至关重要的. 一 首先我们运行以下的程序,然后通过这个程序的运行过程进一步加深理解Spark Streaming流处理的Job的执行的过程,代码如下: object OnlineForeachRDD2DB { def main(args: Array[String]){ /* * 第1步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息, * 例如说通过setMa

定制班第1课:通过案例对SparkStreaming 透彻理解三板斧之一:解密SparkStreaming另类实验及SparkStreaming本质解析

从今天起,我们踏上了新的Spark学习旅途.我们的目标是要像Spark官方机构那样有能力去定制Spark版本. 我们最开始将从Spark Streaming着手. 为何从Spark Streaming切入Spark版本定制?Spark的子框架已有若干,为何选择Spark Streaming?让我们细细道来. Spark最开始只有Spark Core,没有目前的这些子框架.我们通过对一个框架的彻底研究,肯定可以精通Spark力量的源泉和所有问题的解决之道. 我们再看看目前的这些子框架.Spark

第1课:通过案例对SparkStreaming 透彻理解三板斧之一:解密SparkStreaming另类实验及SparkStreaming本质解析

背景: 使用Spark主要是使用Spark Streaming,Spark Streaming的魔力之所在于: 1. 流式处理,如今是一个流处理时代,一切与流不相关的都是无效的数据. 2. 流式处理才是真正的对大数据的印象.Spark Streaming的流式处理非常强大的一个功能是可以在线处理,ML,Spark SQL等流进来的数据,这也是Spark提供的一体化,多元化的技术架构设计带来的优势. 3. Spark Streaming本身是一个程序,Spark Streaming在处理数据的时候

通过案例对SparkStreaming 透彻理解三板斧之一:解密SparkStreaming另类实验

从spark框架的角度来说,spark包含了如下图所示的功能: 从最近spark发布的几个版本来看,GraphX一直没有大的变化,MLlib涉及大量的数学,spark sql则是涉及了大量的sql的优化,所以如果要从某一个子框架来彻底研究spark 那么,spark streaming子框架是最好的切入口.因为本身它就很像是spark core 的一个应用程序.2015年是流式处理的一年,一切数据不是流式处理的话,那么它将失去它应有的价值. Sparkstreaming可以调用,sparksql

spark版本定制:SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错

本期内容: 1.解密Spark Streaming Job架构和运行机制 2.解密Spark Streaming 容错架构和运行机制 一.解密Spark Streaming Job架构和运行机制 通过代码洞察Job的执行过程: object OnlineForeachRDD2DB { def main(args: Array[String]){ /* * 第1步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息 */ val conf = new SparkCon

Spark版本定制:通过案例对SparkStreaming透彻理解三板斧之二:解密SparkStreaming运行机制和架构

本期内容: 1.解密Spark Streaming运行机制 2.解密Spark Streaming架构 上期回顾: 1.技术界的寻龙点穴,每个领域都有自己的龙脉,Spark就是大数据界的龙脉,Spark Streaming就是Spark的龙血: 2.采用了降维(把时间Batch Interval放大)的方式,进行案例演示实战,得到的结论是:特定的时间内是RDD在执行具体的Job: 一.解密Spark Streaming运行机制和架构 运行机制概念:       Spark Streaming运行

Spark定制版2:通过案例对SparkStreaming透彻理解三板斧之二

本节课主要从以下二个方面来解密SparkStreaming: 一.解密SparkStreaming运行机制 二.解密SparkStreaming架构 SparkStreaming运行时更像SparkCore上的应用程序,SparkStreaming程序启动后会启动很多job,每个batchIntval.windowByKey的job.框架运行启动的job.例如,Receiver启动时也启动了job,此job为其他job服务,所以需要做复杂的spark程序,往往多个job之间互相配合.SparkS

第2课:SparkStreaming 透彻理解三板斧之二:解密SparkStreaming运行机制和架构

本期内容: 解密Spark Streaming 运行机制 解密Spark Streaming 框架 Spark Streaming是Spark的一个子框架,但是它更像是运行在Spark Core上的一个应用程序.Spark Streaming在启动时运行了很多的job,并且job之间相互配合. Job围绕了两个方面: 1. 对输入数据流进行计算的Job 2. 框架自身运行需要的Job,例如Receiver启动. Spark Streaming本身就是一个非常复杂的应用程序,如果你对SparkSt