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 ...
随机推荐
- Honda HDS IMMO PCM Code calculator Free Download
HDS IMMO PCM Code calculator software for Honda vehicle models is free download available in Eobd2.f ...
- Python mongoDB 的简单操作
#!/usr/bin/env python # coding:utf-8 # Filename:mongodb.py from pymongo import MongoClient,ASCENDING ...
- Android调用相册截取图片遇到的问题
1.在Android中可以使用如下的方式来调用相册,选择图片进行裁剪使用,昨天在开发的时候遇到一个问题 private void cropBigImageUri(Uri uri, int output ...
- Linux学习之路:变量值的删除、替代和替换
一.删除 var为变量名, ${var#v*r}:从左到右匹配将:头部是“v”,尾部是“r”的最短的部分删除 ${var##v*r}:从左到右匹配将:头部是“v”,尾部是“r”的最长的部分删除 ${v ...
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
第一步:下载第三方库,点击 连接 下载, 第二部:准备数据库:按照连接&中博客的步骤实现数据库, 数据库的设计大致如下表: id username pas ...
- oracle--insert
常规insert语法就不说了,还有些特殊用法 1. insert all into table1(col1,col2) values(v1,v2) into table2(col1,col2) va ...
- Adobe Edge Animate –获取鼠标位置及跟随鼠标功能实现
Adobe Edge Animate –获取鼠标位置及跟随鼠标功能实现 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权和原文地址. 在网络上浏览有关Edge相关问题的时 ...
- VC2010 _com_error 返回的错误信息
CString GetComError(const _com_error& e) { CString sMsg; sMsg.Format( _T("HRESULT: 0x%08lx; ...
- Java读取文件方法和给文件追加内容
本文转载自:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文 ...
- ORACLE之PACKAGE
刚学pl/sql编程,写了两个package.pkg_temp_fn和pkg_temp_fn2.内容涉及pl/sql基本语法,游标,存储过程(in,out),函数(有返回值). pkg_temp_fn ...