Spark发行笔记7 SparkStreaming JobScheduler
来源:互联网 发布:java 创建临时文件夹 编辑:程序博客网 时间:2024/05/21 15:07
感谢DT大数据梦工厂支持提供技术支持,DT大数据梦工厂专注于Spark发行版定制。
本期概览:
1 SparkStreaming JobScheduler深入解析
2 SparkStreaming JobScheduler源码解析
话不多说,先上图,感谢IMF成员提供图片技术支持,图片如下图所示:
JobScheduler的地位非常的重要,所有的关键都在JobScheduler,它的重要性就相当于是Spark Core当中的DAGScheduler,因此,我们要花重点在JobScheduler上面。
以如下代码为例
我们先进入foreachRDD方法源码中,如下图所示
额外再次说明:DStream是逻辑级别的,RDD是物理级别的。正如DStream是空间维度的层面,空间维度加上时间构成时空维度。
更简单形象的理解可以这样理解:比如你有一个计划,计划是那个空间维度,随着时间的推移,你的计划一步一步的实现,从而慢慢形成空间维度。而DStream是那个空间维度,RDD则是那个时空维度。
分析foreachRDD源码可知:遍历RDD,这些RDD构成了依赖关系。再次强调:DStream是逻辑级别的,RDD是物理级别的。
补充说明:下图中StreamingContext类中的如下线程的创建是和conf.setMaster[6]指定的6个线程是完全没有关系的,下图的线程是从调度层面去创建的,如下图:
总结:当自己写spark代码的时候,可以复用spark官方的工具类ThreadUtils,所以所阅读熟悉ThreadUtils的内部工具方法,对于重写spark源代码和二次开发,甚至做spark的发行版的时候,可以借鉴ThreadUtils的重写和复用。
紧接着:实例化ReceiverTracker和EventLoop(注释说这里的俩个对象是scherduler.start()方法执行之后才创建的)
这里说明任务调度和作业执行分开,代码可维护行很好
总结:我们发现,真正的Job的产生是通过DStream通过new ForeachDStream产生ForeachDStream对象,然后调用对象的generateJob产生,然后再通过jobGenerator调用Job物化,
(DStream子类中,只有ForEachDStream重写了generateJobs)
job生成5大步骤,经典的如下图所示
job提交过程,注意服务器时间不能改,改的话,时间维度混乱了,但是spark有相应的机制
此处可以改变streaming的并发度,这也是一个性能调优的技巧。
spark.streaming.concurrentJobs,可以用在同时多个Job并发运行,多个输出。或者说不同的batch,要并行运行的话,也可以通过spark.streaming.concurrentJobs并发运行。
- Spark发行笔记7 SparkStreaming JobScheduler
- 7 SparkStreaming JobScheduler
- Spark笔记-sparkStreaming代码演示
- sparkstreaming-JobScheduler, Job, JobSet 详解
- Spark学习笔记(7)源码解读之JobScheduler内幕实现
- spark发行版笔记2
- Spark学习笔记(24)StreamingContext及JobScheduler源码图解
- SparkStreaming笔记
- Spark+kafka+SparkStreaming实例
- Spark之SparkStreaming案例
- 第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考
- 第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考
- 第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考
- 第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考
- 第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考
- Spark之SparkStreaming案例-kafka
- Spark之SparkStreaming案例-transform
- Spark之SparkStreaming案例-UpdateStateByKey
- 局部变量、全局变量、成员变量的区别
- 函数和方法的区别
- Android Studio配置AndroidAnnotations
- 结构体作为属性
- mongodb将元素添加进数组字段
- Spark发行笔记7 SparkStreaming JobScheduler
- java常用设计模式
- android获取当前系统时间,同时比较当前时间是否在一个时间段范围内
- Java WebService 简单实例
- [GIT] 基本使用方法
- swift 之 UICollectionView
- 魅族Android4.4及以上使用adb工具免root录屏方法
- ajax调用返回php接口返回json数据
- 算法&ACM比赛搜集