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

背景:

使用Spark主要是使用Spark Streaming,Spark Streaming的魔力之所在于:

    1. 流式处理,如今是一个流处理时代,一切与流不相关的都是无效的数据。

    2. 流式处理才是真正的对大数据的印象。Spark Streaming的流式处理非常强大的一个功能是可以在线处理,ML,Spark SQL等流进来的数据,这也是Spark提供的一体化,多元化的技术架构设计带来的优势。

    3. Spark Streaming本身是一个程序,Spark Streaming在处理数据的时候会不断感知数据。所以对构建复杂的Spark应用程序,就极为有参考价值。

在做Spark实验的时候,如果想分析数据的如何流进来,是怎么样被计算的,我们就可以通过Spark Streaming来实现,将batch Interval设置时间非常大,这样里面的很多细节就可以通过log日志观察,这就相当于过去摄影师将李小龙的功夫,然后慢放这样就可以看的更加清晰。

一: Spark Streaming另类在线实验

  1. 启动9999端口,往里面追加数据。如下图所示:

  2. Spark Streaming会在设定的时间间隔中不断的循环,接收数据,然后计算,打印如下:

  3. 通过master:18080端口查看作业的运行,实质上运行了一个Job,然后web端显示运行了5个Job.为啥这样?继续下去一探究竟!!

  4. 先查看Job Id 为0的Job,然后DAG里面的操作我们在实际的代码中并不用这些操作,Spark Streaming在计算的时候会自动的为我们启动一些Job。

    第一个Job会在4个Worker上启动,为了负载均衡,这样后续计算的时候,就可以最大化的使用集群资源。

  5. Job Id为1的Job数据接收器Receiver运行了1.5min,而此时的Receiver的启动是通过Job,而Receiver运行在Executor中且以一个Task的方式去接收数据,和普通的Job接收数据没有区别,这样的话,我们就可以在一个Spark Application中启动很多的Job,不同的Job之间可以相互配合,而Spark Streaming默认启动一个Job是Receiver接收数据。因此对于构建复杂的实现奠定了一个非常好的基础,可以根据其扩展满足自己需要的业务逻辑,并且也可以启动多个Receiver.
    1. Receiver的Locality Level是PROCESS_LOCAL(内存节点),Spark Streaming默认接收数据是MEMORY_AND_DISK_2的方式,由此也可以看出,默认情况下如果是小数据的话,Spark默认会将数据放入到内存中.

    2. Job Id为2的Job,DAG视图如下:

      此时的BlockRDD来自于socketTextStream,实质是InputDStream根据时间间隔产生RDD。

      虽然是在一台机器上接收数据的,但是在4个Executor中完成计算的,这样就可以最大化利用集群资源。

      二: 瞬间理解Spark Streaming本质

      Spark Streaming是基于Spark Core上的一个应用程序,可伸缩,高吞吐,容错(这里主要是借助Spark Core的容错方式)处理在线数据流,数据可以有不同的来源,以及同时处理不同来源的数据。Spark Streaming处理的数据可以结合ML和Graph

      Spark Streaming本身是随着流进来的数据按照时间为单位生成Job,然后触发Job,再Cluster执行的一个流式处理引擎,本质上说是加上了时间维度的批处理。

    3. Spark Streaming支持从多种数据源中读取数据,如Kafka,Flume,HDFS,Kinesis,Twitter等,并且可以使用高阶函数如map,reduce,join,window等操作,处理后的数据可以保存到文件系统,数据库,Dashboard等。

    4. Spark Streaming的工作原理

      实时接收数据流,以时间的维度将数据拆分成多个Batch,然后将每个Batch进行计算,最后的结果也是以batch的方式组成的。

    5. Spark Streaming提供了一个更高级的抽象,DStream,代表了一个持续不断的数据流,DStream的创建可以通过输入数据源(Kafka,Flume和Kinesis),或者通过算子如(Map,reduce,join,window),DStream内部就是一系列持续不断产生的RDD。而每个RDD都包含了一个时间段的数据。

    6. 对DStream应用算子比如map,其实底层被翻译为DStream中的每个RDD操作,每个DStream执行一个map,都会生成新的DStream,但是在底层实质是对RDD进行map操作,然后产生新的RDD,这个过程是通过Spark Core完成的,Spark Streaming对Spark Core进行了一层封装,隐藏了细节,对开发者提供了方便,易用的API。

      对DStream的操作会产生Graph,图中的T1,T2为输入数据,对其进行join,map,foreach等操作,然后产生新的DStream这样就构成了一个Graph,最后在计算的时候会回溯。

      Spark Streaming中Job的产生,以时间的维度,不断产生batch,在算子的操作下,不生产新的DStream,内部实质是产生新的RDD,具体在计算的时候,这样就将DStream Graph转成了RRD Graph。然后再有Spark Core引擎计算。

总结:

本次课程在很短的时间内对于Spark Streaming在处理数据的逻辑上有了本质的理解,后续的课程中会将深入理解,这其中的诸多细节过程,真相也会慢慢浮出水平。作为三把斧系列,好戏还在后面!!

本课程笔记来源于:

时间: 2024-07-29 10:24:15

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

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

一. 源码定制为什么从Spark Streaming切入? Spark 一开始并没我们今天看到的Spark SQL, Spark Streaming, MLlib(machine learning), GraphX(graph), Spark R等相关内容,只有原始的Spark Core. Spark Streaming本身是Spark Core上的一个框架,透过一个框架的彻底研究肯定可以精通Spark力量的源泉和所有Spark问题的解决之道. Spark现在使用较多的除了Spark Core之

Spark源码定制第一课:通过案例对SparkStreaming透彻理解三板斧之一

第一课:通过案例对SparkStreaming透彻理解三板斧之一:解密SparkStreaming另类实验及SparkStreaming本质解析 本期导读: 1 Spark源码定制选择从SparkStreaming入手: 2 Spark Streaming另类在线实验: 3 瞬间理解SparkStreaming本质. 1.    从Spark Streaming入手开始Spark源码版本定制之路 1.1           从Spark Streaming入手Spark源码版本定制之路的理由 从

第1课:通过案例对SparkStreaming 透彻理解三板斧之一

感谢DT大数据梦工厂支持提供以下内容,DT大数据梦工厂专注于Spark发行版定制.详细信息请查看 联系邮箱[email protected] 电话:18610086859 QQ:1740415547 微信号:18610086859 一 为什么从Spark Streaming入手? Spark目前有四个Spark SQL, Spark Streaming, MLlib(machine learning), GraphX(graph), Spark Core是基础,四个框架是建立在基础之上的. 所以

Spark发行版笔记2:通过案例对SparkStreaming透彻理解三板斧之一

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

Spark发行版笔记1:通过案例对SparkStreaming透彻理解三板斧之一

本节课通过二个部分阐述SparkStreaming的理解: 一.解密SparkStreaming另类在线实验 二.瞬间理解SparkStreaming本质 Spark源码定制班主要是自己做发行版.自己动手改进Spark源码,通常在电信.金融.教育.医疗.互联网等领域都有自己不同的业务,如果Sprak官方版本没有你需要的业务功能,你自己可以定制.扩展Spark的功能,满足公司的业务需要. 选择SparkStreaming框架源码研究.二次开发的原因 1.Spark起初只有Spark Core基础框

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

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

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

本节课通过二个部分阐述SparkStreaming的理解: 一.解密SparkStreaming另类在线实验 二.瞬间理解SparkStreaming本质 Spark源码定制,自己动手改进Spark源码,通常在电信.金融.教育.医疗.互联网等领域都有自己不同的业务,如果Sprak官方版本没有你需要的业务功能,你自己可以定制.扩展Spark的功能,满足公司的业务需要. 选择SparkStreaming框架源码研究.二次开发的原因 1.Spark起初只有Spark Core基础框架没有其他的子框架(

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

本篇博文将从以下几点组织文章: 1. 解密Spark Streaming运行机制 2. 解密Spark Streaming架构 一:解密Spark Streaming运行机制 1. DAG生成模板 :DStreamGraph a) Spark Streaming中不断的有数据流进来,他会把数据积攒起来,积攒的依据是以Batch Interval的方式进行积攒的,例如1秒钟,但是这1秒钟里面会有很多的数据例如event,event就构成了一个数据的集合,而RDD处理的时候,是基于固定不变的集合产生

第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