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的一些思考的更多相关文章

  1. Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)

    Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...

  2. Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析

    Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...

  3. Spark Streaming揭秘 Day34 解析UI监听模式

    Spark Streaming揭秘 Day34 解析UI监听模式 今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式. ...

  4. Spark Streaming揭秘 Day33 checkpoint的使用

    Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...

  5. Spark Streaming揭秘 Day32 WAL框架及实现

    Spark Streaming揭秘 Day32 WAL框架及实现 今天会聚焦于SparkStreaming中非常重要的数据安全机制WAL(预写日志). 设计要点 从本质点说,WAL框架是一个存储系统, ...

  6. Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming

    Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming 在Spark2.x中,Spark Streaming获得了比较全面的升级,称为St ...

  7. Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕

    Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountO ...

  8. Spark Streaming揭秘 Day26 JobGenerator源码图解

    Spark Streaming揭秘 Day26 JobGenerator源码图解 今天主要解析一下JobGenerator,它相当于一个转换器,和机器学习的pipeline比较类似,因为最终运行在Sp ...

  9. Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解

    Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解 今天主要理一下StreamingContext的启动过程,其中最为重要的就是Jo ...

随机推荐

  1. Android广播接收者应用(电话拦截器)

    一.电话拦截器应用说明 在我们输入完电话号码并拨打电话时,系统会发出一个有序广播(action="android.intent.action.NEW_OUTGOING_CALL") ...

  2. 杂乱无章之javascript(一)

    1.in 要求第一个(左边的)操作数必须是字符串类型或是可以转化成字符串类型的其他类型,而第二(右边的)操作数必须是数组或对象.只有第一个操作数的值是第二个操作数的属性名,才会返回true,否则返回f ...

  3. [BigData]关于Hadoop学习笔记第四天(PPT总结)(一)

    课程安排 Partitioner编程** 自定义排序编程** Combiner编程** 常见的MapReduce算法** ---------------------------加深拓展-------- ...

  4. asp.net的CascadingDropDown取值和赋值

    获取选择的值 可以使用形如以下的方式获得选择的值: Label1.Text = ddlProvince.SelectedValue;        Label2.Text=ddlCity.Select ...

  5. 纯CSS3制作进度条源代码

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  6. django 学习-2 模板

    如何使用渲染模板的方法来显示内容. 1.创建一个项目dream django-admin.py   startproject   dream cd  dream    再创建一个应用 python m ...

  7. html 文件动态加载.PDI 流程图

    1 //javascript脚本 <script> window.onload = function () { var aid = document.getElementById(&quo ...

  8. C#Winform版获取Excel文件的内容

    public MainForm() { InitializeComponent(); //this.ofd_in.DefaultExt = ".xlsx"; this.ofd_in ...

  9. ADO.NET笔记(一)XML导入导出和数据库

    数据导出成XML文件 #region 数据导出成XML文件 string sql = "select Id, CallerNumber, TelNum, StartDateTime, End ...

  10. html5 canvas 圆形抽奖的实例

    年底没啥,抽空学习了canvas,写了个html5抽奖的代码,造了个轮子,有用的童鞋可以拿走. 其中,canvas.onclick触发抽奖行为,概率可以在core.lottery()函数上添加,美化也 ...