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 ...
随机推荐
- Visual studio 2013 添加 GitHub
- iOS xcode6添加预编译文件
在xcode6以后,由于苹果不建议开发者乱用预编译文件,所以,在项目创建之后 就不会自动生成预编译文件. 那么如果我们想要使用预编译文件,就需要自己动手来添加.那到底该如何为我们的项目添加预编译文件呢 ...
- Objective-C ,ios,iphone开发基础:几个常用类-NSNumber
2013-08-21 在Objective-C,包括int double float 等等再内的基础数据类型都不是一个类,所以就不能给它们发送消息,也就是说不能调用方法,那怎么办呢 ?Objectiv ...
- 怎么删除远程登录连接的ip
通过远程桌面可以登录到远程电脑上进行相应的操作,在登录过后会在本地电脑上留下登录过的IP以及登录用户名相关信息,可能会给远程的电脑带来安全隐患,下面介绍一下清除远程桌面历史记录的方法. 1.删除我的文 ...
- [改善Java代码]预防线程死锁
线程死锁DeadLock是多线程编码中最头疼的问题,也是最难重现的问题,因为Java是单进程多线程语言.
- Volley 源码解析
Volley 源码解析 1. 功能介绍 1.1. Volley Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架.在 Google I/O 2013 大会上发布. ...
- ps,Photoshop
ps翻转.旋转等操作. 注:截图技巧--鼠标按着不懂,同时点击截图快捷键(QQ为ctrl+alt+a)即可避免按下快捷键鼠标按下等操作消失截不到的尴尬.
- Vi三种模式详解
命令行模式 (command mode/一般模式) 任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式:我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时 ...
- 第八篇、微信小程序-progress组件
主要属性: 效果图: ml: <View > <!--百分比是30,并在进度条右侧显示百分比--> <Text class="text-style"& ...
- c#输出json,其中包含子json (可以含 无限级 子json)的方法思路
首页 给出 DataTable 转Json 的方法: public static string TableToJson(DataTable dt) { List<Dictionary<s ...