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

转载于:https://www.cnblogs.com/dt-zhw/p/5492538.html

Spark Streaming揭秘 Day6 关于SparkStreaming Job的一些思考相关推荐

  1. Spark Streaming揭秘 Day9 从Receiver的设计到Spark框架的扩展

    Spark Streaming揭秘 Day9 从Receiver的设计到Spark框架的扩展 Receiver是SparkStreaming的输入数据来源,从对Receiver整个生命周期的设计,我们 ...

  2. Spark Streaming揭秘 Day16 数据清理机制

    Spark Streaming揭秘 Day16 数据清理机制 今天主要来讲下Spark的数据清理机制,我们都知道,Spark是运行在jvm上的,虽然jvm本身就有对象的自动回收工作,但是,如果自己不进 ...

  3. Spark Streaming揭秘 Day13 数据安全容错(Driver篇)

    Spark Streaming揭秘 Day13 数据安全容错(Driver篇) 书接上回,首先我们要考虑的是在Driver层面,有哪些东西需要维持状态,只有在需要维持状态的情况下才需要容错,总的来说, ...

  4. Spark Streaming揭秘 Day14 State状态管理

    Spark Streaming揭秘 Day14 State状态管理 今天让我们进入下SparkStreaming的一个非常好用的功能,也就State相关的操作.State是SparkStreaming ...

  5. Spark 定制版:015~Spark Streaming源码解读之No Receivers彻底思考

    本讲内容: a. Direct Acess b. Kafka 注:本讲内容基于Spark 1.6.1版本(在2016年5月来说是Spark最新版本)讲解. 上节回顾 上一讲中,我们讲Spark Str ...

  6. Spark Streaming源码解读之No Receivers彻底思考

    本期内容 : Direct Acess Kafka Spark Streaming接收数据现在支持的两种方式: 01. Receiver的方式来接收数据,及输入数据的控制 02. No Receive ...

  7. 第15课:Spark Streaming源码解读之No Receivers彻底思考

    通常我们使用kafka direct的方式使用的是没有自定offset的构造函数 val kc = new KafkaCluster(kafkaParams) 完完全全就是kafka的操作了 我们看看 ...

  8. Spark Streaming介绍,DStream,DStream相关操作(来自学习资料)

    一. Spark Streaming介绍 1. SparkStreaming概述 1.1. 什么是Spark Streaming Spark Streaming类似于Apache Storm,用于流式 ...

  9. Flume整合SparkStreaming出现UnsupportedClassVersionError: org/apache/spark/streaming/flume/sink/SparkFlum

    Flume整合SparkStreaming使用Poll方式拉取数据出现 UnsupportedClassVersionError: org/apache/spark/streaming/flume/s ...

  10. sparkstreaming监听hdfs目录如何终止_四十六、Spark Streaming简介及入门

    1.什么是Spark Streaming Spark Streaming是基于Spark Core之间的实时计算框架,可以从很多数据源消费数据并对数据进行处理.它是Spark核心API的一个扩展与封装 ...

最新文章

  1. 孙正义太难了:去年亏125亿美元,15家投资公司要破产,二期愿景基金不得不暂停...
  2. 太火了!MyBatis Plus 为啥这么牛?
  3. boost::graph模块实现边列表算法上的连通分量
  4. php mysql unsigned,PHP MySQL 核心
  5. Spring For All 顶级Spring综合社区服务平台
  6. 验证码_12306验证码很难吗?2020年最新的Python验证码模块开源
  7. 普通程序员,如何转型大数据相关方向?
  8. 随想录(工业软件和消费级软件的区别)
  9. 电竞大数据平台 FunData 的系统架构演进
  10. 全触摸模式,让你尽享ipad 开发出的精品
  11. 计算机屏幕截图如何保存,怎么在屏幕截图
  12. [python]LDA模型使用流程及代码
  13. mongoDB 4.0 开启远程访问
  14. 网站文章被采集?尝试使用这几种方法进行最大防护
  15. 5.20爬虫结——Mu
  16. 什么是软件测试中的人工智能(AI)?
  17. 深度分解服务业细分领域O2O
  18. CCSC考试基本情况
  19. DSP学习总结——Boot引导模式
  20. 十、生产者消费者问题

热门文章

  1. Linux学习笔记之查看Linux版本信息
  2. H5混合开发二维码扫描以及调用本地摄像头
  3. LeetCode-2: Add Two Numbers
  4. iOS 实现搜索关键字高亮
  5. php utf8 正则中文表达式
  6. C#处理控制台关闭事件
  7. 5个开发人员不应该错过的最好跨平台PHP编辑器
  8. Nginx(代理)+Tomcat(Java)+Apache(PHP)共用80端口
  9. maven3常用命令、java项目搭建、web项目搭建详细图解
  10. webstorm 快捷键