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

//设置batchDuration时间间隔

val ssc =new StreamingContext (conf,Seconds

(5))

 

真正的调度 ssc.start

 

StreamingContext调用start方法的内部其实是一次启动JobSchedulerstart方法,进入消息循环。

在调用Scheduler内部构造JobGeneratorReceiverTracker,并且调用JobGeneratorReceiverTrackerstart方法。JobGenerator启动后不断根据BatchDuration生成job

 

ReceiverTracker启动后在集群中启动Receiver,首先启动ReceiverSupersivor

 

数据通过ReceiverSupersivor 存储到Executor并把数据的Metadata信息发送到DriverReceiverTracker,在ReceiverTracker内部通过ReceiverdBlockTracker来管理接收到的数据

  

 

有了job,有了数据,要产生RDD,怎么表达业务逻辑呢,要依赖于DstreamGraph,线程池复制,提交到cluster

  

每个BatchInterval会产生一个具体的job,其实这里的JOB不是Spark CORE

中所指的JOB,只是基于DstreamGraph而生成的RDDDAG而已,从Java角度,相对于Runnable接口实例,此时想运行job需要提交到JobScheduler,在JobsCheduler中通过单独的线程提交job到集群运行,其实在线程中基于RDDACtion触发作业的运行。为什么使用线程池呢?

1、作业不断生成,提升效率,需要线程池

2、有可能设置的JobFAIR公平调度的方式,也需要多线程的支持

 

  

容错

1job级别

2executor级别接收数据安全性,执行数据安全性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值