Spark Streaming揭秘 Day6 关于SparkStreaming Job的一些思考
Spark Streaming揭秘 Day6
关于SparkStreaming Job的一些思考
Job是SparkStreaming的重要基础,今天让我们深入,进行一些思考。
Job是什么?
首先,有个挺重要的概念要区分下,就是SparkStreaming中的Job和Spark core的Job并不相同,可以认为SparkStreaming中的Job是一个应用程序,不同于Spark core中的Job。
从Job的的定义来看,类似于一个Java Bean,核心是其run方法,相当于Java中线程要处理的Runnable逻辑的封装。

Job从何而来?
Job是基于DStreams生成,更准确的说,基于DStreams的依赖关系graph来产生Jobs。
DStream有三种类型,包括InputDstreams、OutputDStreams(逻辑级别的action,会封装Spark的action)、TransformationDStreams(中间转换逻辑),后面的DStreams对前面的有依赖。
从下面的代码中,我们可以看出Job主要是基于outputStreams来生成。

Job触发方式?
在Spark Streaming中以时间方式触发Job,主要采用定时方式生成,也包涵其他方式(比如状态操作state对很多Batch Duration做汇总处理)。
其核心是通过一个timer来实现定时调用

而timer是通过callback方法,来调用我们的Job生成过程,和应用程序进行衔接。

Job的生成过程
下面这段是Job生成最为关键的代码:

在这段代码中包涵了Job的生成和提交的完整过程:
包含几个步骤:
1.获取当前时间段的数据,通过receiverTracker
2.根据Dstream graph生成Job
3.生成Input信息
4.把生成的Job交给jobScheduler运行
5.进行checkpoint
最终会调用JobHandler中的run方法来运行

小结
用如下的流程图来将上述内容进行一下串联。

通过如上的分析,我们可以知道Job是逻辑级别的,对RDD的物化。在Streaming代码中,操作会被翻译成RDD的操作,但是被封装在函数体里,仅仅在执行时才拿出来调用。实际是由底层RDD的action来触发的(所以才有机会调度和优化)。
而对于传统的批处理方式来说,可以认为仅仅是流式处理的一种特例,可以说,SparkStreaming提供了一种更为通用的大数据解决方案。
欲知后事如何,且听下回分解
DT大数据每天晚上20:00YY频道现场授课频道68917580
Spark Streaming揭秘 Day6 关于SparkStreaming Job的一些思考的更多相关文章
- Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)
Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...
- Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析
Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...
- Spark Streaming揭秘 Day34 解析UI监听模式
Spark Streaming揭秘 Day34 解析UI监听模式 今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式. ...
- Spark Streaming揭秘 Day33 checkpoint的使用
Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...
- Spark Streaming揭秘 Day32 WAL框架及实现
Spark Streaming揭秘 Day32 WAL框架及实现 今天会聚焦于SparkStreaming中非常重要的数据安全机制WAL(预写日志). 设计要点 从本质点说,WAL框架是一个存储系统, ...
- Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming 在Spark2.x中,Spark Streaming获得了比较全面的升级,称为St ...
- Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕
Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountO ...
- Spark Streaming揭秘 Day26 JobGenerator源码图解
Spark Streaming揭秘 Day26 JobGenerator源码图解 今天主要解析一下JobGenerator,它相当于一个转换器,和机器学习的pipeline比较类似,因为最终运行在Sp ...
- Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解
Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解 今天主要理一下StreamingContext的启动过程,其中最为重要的就是Jo ...
随机推荐
- css笔记04:属性选择器
1.属性选择器: 带有 title 属性的所有元素设置样式: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- 小团队开发管理工具:gitlab+redmine+testlink+jenkins
由于工作需要,需要为团队搭建一个高效可用的开发管理平台.现在可用的开发管理工具很多开源的.商业的,网上也有很多博客和文章.经过2周的学习比较,再结合自己的项目特点,最后选定工具集:gitlab+red ...
- SQL Server 调优:set statistics profile on
进行set statistics profile on 设置后 将会返回执行计划表,通过该表,可以理解语句执行的过程,了解SQL Server是否选择了正确的执行计划,进而确定调优方向! 1.返回表字 ...
- [转]不用安装Oracle Client如何使用PLSQL Developer
本文转自:http://www.cnblogs.com/sleepywang/archive/2009/10/13/1582654.html 1. 下载oracle的客户端程序包(30M) 只需要在O ...
- MultiMap、BidiMap及LazyMap的使用
一.MultiMap 在日常的开发工作中,我们有的时候需要构造像Map<K, List<V>>或者Map<K, Set<V>>这样比较复杂的集合类型的数 ...
- fatal error LNK1168: cannot open Debug/opreat.exe for writing
问题:LINK : fatal error LNK1168: cannot open Debug/opreat.exe for writing Error executing li ...
- Commons JXPath - Object Graph Traversal
JXPath 提供了使用 Xpath 语法操纵符合 Java 类命名规范的 JavaBeans 的工具.也支持 maps.DOM 和其他对象模型.对于深层次结构的 JavaBean,使用 JXPath ...
- Linux 命令 - free: 显示系统的内存信息
命令格式 free [-b | -k | -m] [-o] [-s delay ] [-t] [-l] [-V] 命令参数 -b 显示内存的单位为 Byte. -k 显示内存的单位为 KB. -m 显 ...
- JAVA-位运算符
请解释&和&&.|和||的区别? 在逻辑运算中: · 与操作:与操作分为两种,一种是普通与,另外一种是短路与: |- 普通与(&):表示所有的判断条件都要执行,不管前面 ...
- centos6.5下逻辑卷操作
1.将两块独立磁盘分别分区 2.创建物理卷-pvcreate 3.创建卷组 4.创建逻辑卷 5.格式化逻辑卷 6.扩展逻辑卷 7.缩小逻辑卷