DT大数据梦工厂Spark 定制班笔记(003)

本文介绍Spark Streaming中Job的启动流程,包括JobScheduler的角色、事件循环机制、Receiver的管理及JobGenerator如何根据BatchDuration生成Job。同时,探讨了Spark Streaming基于DStream的容错机制,解释它是如何转换为每次生成的RDD的容错机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 Spark Streaming Job的启动

编写SparkStreaming程序的时候,设置了BatchDuration,Job每隔BatchDuration时间会自动触发,这个功能肯定是SparkStreaming框架提供了一个定时器,时间一到就将编写的程序提交给Spark,并以Spark job的方式运行。

注意:这里的Job不是Spark Core中所指的Job,它只是基于DStreamGraph而生成的RDD的DAG而已,从Java角度讲,相当于Runnable接口实例,此时要想运行Job需要提交给JobScheduler,在JobScheduler中通过线程池的方式找到一个单独的线程来提交Job到集群运行

注:使用线程池的好处:

a) 作业不断生成,所以为了提升效率,我们需要线程池;这和在Executor中通过线程池执行Task有异曲同工之妙

b) 有可能设置了Job的FAIR公平调度的方式,这个时候也需要多线程的支持


Job启动过程如下所示


说明

2) JobScheduler在启动的时候会实例化EventLoop,并执行EventLoop.start()进行消息循环

3)对Receiver的运行进行管理,ReceiverTracker启动时会调用lanuchReceivers()方法,进而会使用rpc通信启动Receiver(实际代码中,Receiver由 ReceiverSupervisorImpl启动)

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


. Spark Streaming容错机制:

 我们知道DStream与RDD的关系就是随着时间流逝DStream不断的产生RDD,对DStream的操作就是在固定时间上操作RDD。Spark Streaming的基于DStream的容错机制,实际上就是划分到每一次形成的RDD的容错机制,这也是Spark Streaming的高明之处。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值