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

定时任务的执行的批处理只是时间间隔比较长的流处理的方式,所以以前的时间间隔很长的批处理方式,时间间隔足够短的时候就变成了流式处理,实时处理,现在实时处理比较流行,所以以前的时间间隔很长的批处理方式会被流处理所替代。


一、DStream大体分为三种类型:

1、输入的DStreams;
2、输出的DStreams,是一个逻辑级别的Action,它是SparkStreaming框架提出的,它的底层还是会被翻译成物理级别的Action,所谓物理级别的Action是RDD的Action;
3、中间的业务处理的Transformation;

二、产生DStream有两种方式:

1、直接基于数据源构建Dtream;
2、针对其他的DStream操作产生的新的DStream;

三、每个BatchDuration的时候JobGenerator都会产生Job。

四、把DStream的依赖关系翻译成RDD之间的依赖关系,由于DStream依赖关系的最后一个一定是Action的操作,翻译成RDD的时候,RDD最后一个也是Action级别的操作,如果翻译的时候,直接执行了,它就直接生成了Job,就没有所谓的队列之类,它也不受管理了,所以会把这个翻译的RDD放在一个方法中,只不过是方法的定义的部分,我们所说的物理级别的RDD,实际上确实是被翻译成了RDD,只不过RDD所有的翻译的内容,都是在一个方法中,这个方法还没有执行,所以方法中的RDD无法执行,当JobScheduler要调度这个Job的时候,就转过来在线程池中拿出一条线程执行刚才的封装的方法。


JobGenerator:负责Job的生成;

JobScheduler:负责Job的调度;

ReceiverTracker:负责接收数据;


JobGenerator的重要方法调度过程图:

Spark Streaming源码解读之Job动态生成和深度思考_第1张图片


备注:技术资源来自大数据Spark第一人王家林
QQ:1740415547
新浪微博:http://weibo.com/ilovepains/

你可能感兴趣的:(spark,spark,大数据,Streaming,Streaming,JobGenerator)