解密SparkStreaming运行机制和架构分析



  1. 解密Spark Streaming Job架构和运行机制
  2. 解密Spark Streaming容错架构和运行机制
  1. 作业的生成肯定是一个动态的生成

private[streaming]valgraph:
DStreamGraph = {

if(isCheckpointPresent)
{

cp_.graph.setContext(this)

cp_.graph.restoreCheckpointData()

cp_.graph

}else{

require(batchDur_
!= null,"Batch
duration for StreamingContext cannot be null")

valnewGraph
=newDStreamGraph()

newGraph.setBatchDuration(batchDur_)

newGraph

}

}

2.

private[streaming]valcheckpointDuration:
Duration = {

if(isCheckpointPresent)
cp_.checkpointDurationelsegraph.batchDuration

}

private[streaming]valscheduler=newJobScheduler(this)

private[streaming]valwaiter=newContextWaiter

private[streaming]valprogressListener=newStreamingJobProgressListener(this)

private[streaming]valuiTab:
Option[StreamingTab] =

if(conf.getBoolean("spark.ui.enabled",true))
{

Some(newStreamingTab(this))

}else{

None

}

3.

defstart():Unit=
synchronized {

if(eventLoop!=null)return//
scheduler has already been started

logDebug("Starting
JobScheduler")

eventLoop=newEventLoop[JobSchedulerEvent]("JobScheduler")
{

override protected defonReceive(event:
JobSchedulerEvent):Unit= processEvent(event)

override protected defonError(e:Throwable):Unit=
reportError("Error in job scheduler",e)

}

eventLoop.start()

// attach rate controllers of input streams to receive batch completion
updates

for{

inputDStream <- ssc.graph.getInputStreams

rateController <- inputDStream.rateController

} ssc.addStreamingListener(rateController)

listenerBus.start(ssc.sparkContext)

receiverTracker=newReceiverTracker(ssc)

inputInfoTracker=newInputInfoTracker(ssc)

receiverTracker.start()

jobGenerator.start()

logInfo("Started JobScheduler")

}

1.在StreamingContext调用start方法的内部其实是会启动JobScheduler的Start方法,进行消息循环,在JobScheduler 的start内部会构造JobGenerator和ReceiverTacker,并且调用JobGenerator和ReceiverTacker的start方法:

(1). JobGenerator启动后会不断的根据batchDuration生成一个个的Job

(2). ReceiverTracker启动后首先在Spark Cluster中启动Receiver(其实是在Executor中先启动ReceiverSupervisor),在Receiver收到
数据后会通过ReceiverSupervisor存储到Executor并且把数据的Metadata信息发送给Driver中的ReceiverTracker,在ReceiverTracker内部会通过ReceivedBlockTracker来管理接受到的元数据信息

2.
每个BatchInterval会产生一个具体的Job,其实这里的Job不是Spark Core中所指的Job,它只是基于DStreamGraph而生成的RDD的DAG而已,从Java角度讲,相当于Runnable接口实例,此时要想运行Job需要提交给JobScheduler,在JobScheduler中通过线程池的方式找到一个

元数据:分布式的集群,为了高效的处理数据,一方面是数据本身,另一方面是数据存储在哪里,相当于数据的本身,高效的数据处理方法,是将数据的索引和数据进行区分,元数据的管理是通过BlockTracker来管理的,存数据通过BlockManager来存储管理

  1. Spark Streaming容错机制:

    从第二课中我们发现,Dstream相对于RDD是逻辑层面的,通过Dstream
    Graph随着时间的流失不断的产生RDD,所以对Dstream的操作就是在固定的时间上操作RDD。所以基于RDD的容错机制同样也实用与Spark
    Streamign的容错机制

Spark Streaming的容错要考虑两个方面:

  1. 接收数据的安全性,1.默认情况下都会在两台机器上2.WAL机制,先把数据通过WAL做一个日志记录,kafka支持数据的回放
  2. 执行数据的安全性,Job执行完全靠RDD的引导,Excutor的安全性
  3. Driver级别的安全性,DAG生成的模板,Dstream Graph,Reciever
    Tracker, JobGenerator,只需要做一个checkpoint就行

感谢DT大数据梦工厂支持提供以下内容,DT大数据梦工厂专注于Spark发行版定制。详细信息请查看

联系邮箱[email protected]

电话:18610086859

QQ:1740415547

微信号:18610086859



时间: 2024-12-28 17:40:44

解密SparkStreaming运行机制和架构分析的相关文章

解密SparkStreaming运行机制和架构进阶之Job和容错(第三篇)

本期要点: 1.探讨Spark Streaming Job架构和运行机制 2.探讨Spark Streaming 容错机制 关于SparkStreaming我们在前面的博客中其实有所探讨,SparkStreaming是运行在SparkCode之前的一个子框架,下面我们通过一个简单例子来逐一探讨SparkStreaming运行机制和架构 SparkStreaming运行机制和架构 //新浪微博:http://weibo.com/ilovepains/ SparkConf conf = new Sp

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

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

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

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

第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

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

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

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

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

ANDROID窗口管理服务实现机制和架构分析

 一.功能 窗口管理是ANDROID框架一个重要部分,主要包括如下功能: (1)Z-ordered的维护 (2)窗口的创建.销毁 (3)窗口的绘制.布局 (4)Token管理,AppToken (5)活动窗口管理(FocusWindow) (6)活动应用管理(FocusAPP) (7)输入法管理 (8)系统消息收集与分发 这些功能主要由一个窗口管理服务和相应的客户端来实现的,客户端通过BINDER机制与服务实现交互.       窗口管理服务端负责主要的窗口管理功能,由一个WindowMan