您的位置:首页 > 大数据

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

2016-05-21 15:37 295 查看
一 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的高明之处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: