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 ...
随机推荐
- 小白日记16:kali渗透测试之弱点扫描-openvas、nessus
漏洞扫描工具 1.openvas OpenVAS是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器.在kali上默认集成openvas.在kali上,配置相对简单[几乎每天都在更新] 实 ...
- CentOS 6.0下面安装JDK7
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 1. 安 ...
- KindEditor图片上传到七牛云
自己做了一个网站,编辑器用的是KindEditor,平时会涉及到KindEditor自带的图片上传,但是服务器用的是虚拟主机,没多少空间,就一直想着把图片放在免费的云存储空间,之前看KindEdito ...
- Linux上安装MPEG-1 Layer3(mp3)解码器
今天突然想要在linux上播放音乐,但是打开之后发现缺少了解码器 于是去网上找了解决的方法,说得天花乱坠,不过有个帖子给出了很简单的方法. 以下内容转载于网络 上面提示没有安装解码器,这是因为版权问题 ...
- php创建文件夹后设置文件夹权限(转)
原文链接:http://www.phpstudy.net/b.php/69873.html PHP mkdir()无写权限的问题解决方法 使用mkdir创建文件夹时,发现这个函数有两个参数,第二个参数 ...
- CF A and B and Compilation Errors (排序)
A and B and Compilation Errors time limit per test 2 seconds memory limit per test 256 megabytes inp ...
- XShell提示Connection closed by foreign host的问题 和 路由器分配IP的规则
情况是这样的: VMware中有三个Linux机器分别是crxy99(192.168.1.99),crxy100(192.168.1.100),crxy101(192.168.1.101),crxy1 ...
- android代码片段一
1.Android判断是Pad或者手机 public boolean isTabletDevice() { TelephonyManager telephony = (TelephonyManager ...
- C# Windows Service服务的创建和调试
前言 关于Windows服务创建和调试的文章在网络上的很多文章里面都有,直接拿过来贴在这里也不过仅仅是个记录,不会让人加深印象.所以本着能够更深刻了解服务项目的创建和调试过程及方法的目的,有了这篇记录 ...
- Commons Codec - 常见的编码解码
Base64 Base64 编码 assertEquals("T3chIQ==", Base64.encodeBase64String("Ow!!".getBy ...