本期内容:

1 解密Spark Streaming运行机制

2 解密Spark Streaming架构

  一切不能进行实时流处理的数据都是无效的数据。在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下。

Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序。如果可以掌握Spark streaming这个复杂的应用程序,那么其他的再复杂的应用程序都不在话下了。这里选择Spark Streaming作为版本定制的切入点也是大势所趋。

  我们知道Spark Core处理的每一步都是基于RDD的,RDD之间有依赖关系。上图中的RDD的DAG显示的是有3个Action,会触发3个job,RDD自下向上依赖,RDD产生job就会具体的执行。从DSteam Graph中可以看到,DStream的逻辑与RDD基本一致,它就是在RDD的基础上加上了时间的依赖。RDD的DAG又可以叫空间维度,也就是说整个Spark Streaming多了一个时间维度,也可以成为时空维度。

  从这个角度来讲,可以将Spark Streaming放在坐标系中。其中Y轴就是对RDD的操作,RDD的依赖关系构成了整个job的逻辑,而X轴就是时间。随着时间的流逝,固定的时间间隔(Batch Interval)就会生成一个job实例,进而在集群中运行。

  对于Spark Streaming来说,当不同的数据来源的数据流进来的时候,基于固定的时间间隔,会形成一系列固定不变的数据集或event集合(例如来自flume和kafka)。而这正好与RDD基于固定的数据集不谋而合,事实上,由DStream基于固定的时间间隔行程的RDD Graph正是基于某一个batch的数据集的。

  从上图中可以看出,在每一个batch上,空间维度的RDD依赖关系都是一样的,不同的是这个五个batch流入的数据规模和内容不一样,所以说生成的是不同的RDD依赖关系的实例,所以说RDD的Graph脱胎于DStream的Graph,也就是说DStream就是RDD的模版,不同的时间间隔,生成不同的RDD Graph实例。

  从Spark Streaming本身出发:

1.需要RDD DAG的生成模版:DStream Graph

2需要基于Timeline的job控制器

3需要inputStreamings和outputStreamings,代表数据的输入和输出

4具体的job运行在Spark Cluster之上,由于streaming不管集群是否可以消化掉,此时系统容错就至关重要

5事务处理,我们希望流进来的数据一定会被处理,而且只处理一次。在处理出现崩溃的情况下如何保证Exactly once的事务语意。

从源码解读DStream

  从这里可以看出,DStream就是Spark Streaming的核心,就想Spark Core的核心是RDD,它也有dependency和compute。更为关键的是下面的代码:

这是一个HashMap,以时间为key,以RDD为value,这也正应证了随着时间流逝,不断的生成RDD,产生依赖关系的job,并通过jobScheduler在集群上运行。再次验证了DStream就是RDD的模版。

DStream可以说是逻辑级别的,RDD就是物理级别的,DStream所表达的最终都是通过RDD的转化实现的。前者是更高级别的抽象,后者是底层的实现。DStream实际上就是在时间维度上对RDD集合的封装,DStream与RDD的关系就是随着时间流逝不断的产生RDD,对DStream的操作就是在固定时间上操作RDD。

  总结:

  在空间维度上的业务逻辑作用于DStream,随着时间的流逝,每个Batch Interval形成了具体的数据集,产生了RDD,对RDD进行transform操作,进而形成了RDD的依赖关系RDD DAG,形成job。然后jobScheduler根据时间调度,基于RDD的依赖关系,把作业发布到Spark Cluster上去运行,不断的产生Spark作业。

备注:

资料来源于:DT_大数据梦工厂(Spark发行版本定制)

更多私密内容,请关注微信公众号:DT_Spark

如果您对大数据Spark感兴趣,可以免费听由王家林老师每天晚上20:00开设的Spark永久免费公开课,地址YY房间号:68917580

转载于:https://blog.51cto.com/18610086859/1769793

(版本定制)第2课:通过案例对SparkStreaming透彻理解之二相关推荐

  1. 通过案例对SparkStreaming透彻理解-3

    2019独角兽企业重金招聘Python工程师标准>>> 本期内容: 解密Spark Streaming Job架构和运行机制 解密Spark Streaming 容错架构和运行机制 ...

  2. 第3课:SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错...

    本期内容: 解密Spark Streaming Job架构和运行机制 解密Spark Streaming容错架构和运行机制 理解SparkStreaming的Job的整个架构和运行机制对于精通Spar ...

  3. 优秀计算机基础微课案例,大学计算机基础——大学微课实用案例教学

    大学计算机基础--大学微课实用案例教学 语音 编辑 锁定 讨论 上传视频 <大学计算机基础--大学微课实用案例教学> 是清华大学出版社于2006年出版的图书.作者是徐军.李翠梅.杨丽君. ...

  4. oracle 11.2.0.4 bug,警示:一个专为AIX上oracle11.2.0.4版本定制的Bug正在高发

    作者:盖国强 有这么一个Bug,仅在AIX平台上,Oracle Database 11.2.0.4的版本中出现,在12.1中被修复,之前和之后都不存在,所以简直是为这一版本定制的. 之前一些客户零星的 ...

  5. Spark版本定制第12天:Executor容错安全性

    本期内容: 1 Executor WAL 2 消息重放 3 其他 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark ...

  6. 职高计算机教学案例 反思,关于职高数学优质课教学案例的研究与反思

    [摘 要] 随着社会的发展和世界经济的相互融合,我国社会的技能型人才已经供不应求,同时,国家也加强了对职业教育的扶持力度,政策上也向职高倾斜.职高数学是每一个学生必须掌握的基础知识,是其学好专业知识的 ...

  7. Transformer课程 第8课 NER案例模型训练及预测

    Transformer课程 第8课 NER案例模型训练及预测 Train Our Classification Model 现在,我们的输入数据已正确格式化,是时候对BERT模型进行微调了. 4.1. ...

  8. Transformer课程 第8课NER案例代码笔记-IOB标记

    Transformer课程 第8课NER案例代码笔记-IOB标记 NER Tags and IOB Format 训练集和测试集都是包含餐厅相关文本(主要是评论和查询)的单个文件,其中每个单词都有一个 ...

  9. Transformer课程 第8课NER案例代码笔记-部署简介

    Transformer课程 第8课NER案例代码笔记 BERT微调器 NER是信息提取的子任务,旨在将非结构化文本中提到的命名实体定位并分类为预定义类别,如人名.组织.位置.医疗代码.时间表达式.数量 ...

  10. 电子商务案例分析php,2020知到《西安邮电大学网课电子商务案例分析》单元测试答案2020高校邦《ThinkPHP框架技术》答案免费...

    2020知到<西安邮电大学网课电子商务案例分析>单元测试答案2020高校邦<ThinkPHP框架技术>答案免费 更多相关问题 [判断题] 动物性原料最适宜剞蓑衣花刀. [问答题 ...

最新文章

  1. Thread系列——Thread.Sleep(0)
  2. python使用生成器生成浮点数列表、使用生成器生成(正)负的浮点数列表
  3. LINQ : 如何为LINQ TO SQL实现自定义业务逻辑
  4. 网络营销专员浅析在当下移动互联网中实施网络营销的基本特点
  5. [ARM异常]-同步异常产生和返回(svc/hyc/smc/eret)
  6. python 遍历文件夹
  7. jdbctemplate mysql 配置_Spring Boot 初级入门教程(十四) —— 配置 MySQL 数据库和使用 JdbcTemplate 测试...
  8. Linux安装weblogic报错“u01/app/oraInventory/“ cannot read/execute
  9. SAP GUI 770下载
  10. 【3. Redis高级特性】
  11. android 呼吸灯权限_Android 呼吸灯流程分析
  12. 【PM杂谈】我理解的项目管理
  13. 【CSDN竞赛第四期】编程赛后总结与分享
  14. Makefile经典教程(掌握这些足够)
  15. 微信公众号密码转换的密钥
  16. 手把手教你配置苹果APNS推送服务
  17. 计算机科学主题 一亩三分地 每日答题 题库
  18. HTML5新特性之History
  19. 提高IT项目沟通技巧
  20. 读取ES Date从UTC转为北京时间

热门文章

  1. i12单双耳切换_“摸一摸”,乐在其中 | 雷柏i100蓝牙TWS耳机,主从切换,可单耳使用,也可双耳使用...
  2. gogs app.ini文件配置项说明
  3. Jquery之append()和html()的区别
  4. echarts设置之stack参数
  5. easyui添加删除表格任意行
  6. 上海财经大学计算机考研好不好,五所不错的财经类大学,不歧视,不压分,你会考虑吗?...
  7. 使用TortoiseGit提交代码到github上
  8. 百度的搜索好厉害,刚刚发文就能搜索到
  9. C编译中如何向代码中传递一个预定义字串
  10. sudo rpm安装时$USER是root