Spark定制班第6课:Spark Streaming源码解读之Job动态生成和深度思考

原创 2016年05月31日 00:32:31


Spark Streaming Job动态生成三大核心

  • JobGenerator:负责Job生成
  • JobSheduler:负责Job调度
  • ReceiverTracker:获取元数据

JobGenerator在构造的时候有一个核心的参数是jobScheduler,jobScheduler是整个Job(作业)的生成和提交给集群的核心,JobGenerator会基于DStream生成Job。这里面的Job就相当于Java中线程要处理的Runnable里面的业务逻辑封装。Spark的Job就是运行的一个作业。

最后来思考一个问题:DStreamGraph将逻辑级别的输入数据翻译成物理级别的RDD Graph,最后一个操作是RDD的action操作,是否会立即触发Job?

  • action触发Job,这个时候作为Runnable接口封装,他会定义一个方法,这个方法里面是基于DStream的依赖关系生成的RDD。翻译的时候是将DStream的依赖关系翻译成RDD的依赖关系,由于DStream的依赖关系最后一个是action级别的,翻译成RDD的时候,RDD的最后一 个操作也应该是action级别的,如果翻译的时候直接执行的话,就直接生成了Job,就没有所谓的队列,所以会将翻译的事件放到一个函数中或者一个方法fun() 中,因此,如果这个函数没有指定的action触发Job是执行不了的。
  • Spark Streaming根据时间不断的去管理我们的生成的Job,所以这个时候我们每个Job又有action级别的操作,这个action操作是对DStream进行逻辑级别的操作,他生成每个Job放到队列的时候,他一定会被翻译为RDD的操作,那基于RDD操作的最后一个一定是action级别的,如果翻译的话直接就是触发action的话整个Spark Streaming的Job就不受管理了。因此我们既要保证他的翻译,又要保证对他的管理,把DStream之间的依赖关系转变为RDD之间的依赖关系, 最后一个DStream使得action的操作,翻译成一个RDD之间的action操作,整个翻译后的内容他是一块内容,他这一块内容是放在一个函数体中的,这个函数体,他有函数的定义,这个函数由于只是定义还没有执行,所以他里面的RDD的action不会执行,不会触发Job,当我们的 JobScheduler要调度Job的时候,转过来在线程池中拿出一条线程执行刚才的封装的方法。

Spark定制班第6课:Spark Streaming源码解读之Job动态生成和深度思考

本期内容: 1 Spark Streaming Job生成深度思考 2 Spark Streaming Job生成源码解析 1 Spark Streaming Job生成深度思考   前面的...
  • andyshar
  • andyshar
  • 2016年05月17日 20:02
  • 1035

Spark Streaming源码解读之Job详解

一:Spark Streaming Job生成深度思考 1. 做大数据例如Hadoop,Spark等,如果不是流处理的话,一般会有定时任务。例如10分钟触发一次,1个小时触发一次,这就是做流处理的...
  • snail_gesture
  • snail_gesture
  • 2016年05月15日 16:53
  • 12862

Spark Streaming源码解读之Job动态生成和深度思考

JobGenerator和ReceiverTracker的类对象是JobSchedule的类成员。从SparkStreaming应用程序valssc=StreamingContext(conf)入口开...
  • askvinson
  • askvinson
  • 2016年05月23日 23:57
  • 141

第6课:Spark Streaming源码解读之Job动态生成和深度思考

第6课:Spark Streaming源码解读之Job动态生成和深度思考   /** * This class schedules jobs to be run on Spark. It uses ...
  • duan_zhihua
  • duan_zhihua
  • 2016年05月12日 18:02
  • 424

第6课:SparkStreaming源码解读之Job动态生成和深度思考

第6课:Spark Streaming源码解读之Job动态生成和深度思考 本讲内容: a. Spark Streaming Job生成深度思考 b. Spark Streaming Job生成...
  • MichaelLi916
  • MichaelLi916
  • 2016年05月24日 17:10
  • 880

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

本期要点: 1、探讨Spark Streaming Job架构和运行机制 2、探讨Spark Streaming 容错机制...
  • xiaojun220
  • xiaojun220
  • 2016年05月07日 10:47
  • 1303

spark-streaming系列------- 1. spark-streaming的Job调度 上

这段时间分析了下spark-streming任务调度的源码,成果分享一下。     类似于spark-core,spark-streaming有自己的一套任务调度,具体代码在spark-streami...
  • u012684933
  • u012684933
  • 2015年09月10日 16:12
  • 1196

Spark定制班第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考

解读Spark Streaming源码时,不要把代码看成高深的东西,只要把它看成是JVM上的普通应用程序。要有信心搞定它。 本期内容 1. JobScheduler内幕实现 2. JobSche...
  • andyshar
  • andyshar
  • 2016年05月19日 11:43
  • 628

spark-streaming系列------- 4. Spark-Streaming Job的生成和执行

Spark-Streaming Job的生成和执行可以通过如下图表示: Spark-Streaming Job的生产和和执行由以下3个部分相互作用生成: Driver程序:用户通过编写Driver...
  • u012684933
  • u012684933
  • 2015年10月29日 14:13
  • 1295

6 Spark Streaming Job思考

内容: 1,Spark Streaming Job生成深度思考 2,Spark Streaming Job生成源码解析
  • sinat_25306771
  • sinat_25306771
  • 2016年05月24日 13:03
  • 1169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark定制班第6课:Spark Streaming源码解读之Job动态生成和深度思考
举报原因:
原因补充:

(最多只允许输入30个字)