本节主要内容:

一、DStream与RDD关系的彻底的研究

二、StreamingRDD的生成彻底研究

Spark Streaming RDD思考三个关键的问题:

RDD本身是基本对象,根据一定时间定时产生RDD的对象,随着时间的积累,不对其管理的话会导致内存会溢出,所以在BatchDuration时间内执行完RDD操作后,需对RDD进行管理。

1、DStream生成RDD的过程,DStream到底是怎么生成RDD的?

2、DStream和RDD到底什么关系?

3、运行之后怎么对RDD处理?

所以研究Spark Streaming的RDD,RDD产生的全生命周期,产生、运行、运行后的管理尤其重要。

源码解读:

温馨提示:广播和计数器并不像看上去简单,在实际的最佳实践中,通过广播和计数器可以实现非常复杂的算法。

看代码逻辑,逻辑是一种想法,上述代码的socketTextStream,就可以想象数据的输入?,数据处理?数据怎么来?

在获得数据后进行一系列的transformations、最后进行foreachRDD的操作。

1、直接用foreachRDD 在这里面直接定义了对action操作,可以直接写对RDD处理的操作函数,如图:

2、从RDD的角度讲,操作DStream 的print函数,其实是转过来操作foreachRDD的print:

在RDD中操作action不会产生新的RDD,DStream和它完全对应,在DStream中操作action不会产生新的DStream。

foreachDStream是transformation操作,在整个Spark Streaming的操作中,foreachDStream不一定会触发job的执行

,但会触发Job的产生。

Job产生由timer产生,根据业务逻辑代码产生,和foreachDStream没什么关系。

1、foreachDStream和Job的执行没有关系,不会触发Job执行。

2、有foreachDStream执行会产生Job是不对的,只根据框架来调度Job的执行。

foreachRDD的代码中对RDD的操作,如果没有action操作则不会执行action的操作。

foreachRDD是Spark Streaming的后门,直接对rdd的操作,背后封装成foreachRDD的操作。

总结:

在Spark Streaming的所有逻辑操作都是对DStream的操作,对DStream的操作其实就是对RDD的操作,DStream是RDD的模板。

后面的DStream对前面的DStream有依赖:

对map操作产生map的DStream:

基于DStream怎么产生rdd?通过batchInterval。研究DStream是怎么生成,看DStream的操作触发RDD的生成。

根据时间实例产生RDDs,和batchDuration对齐的,如:timer实例就是1秒,1秒生成一个RDD,

每个RDD对应一个Job,因为RDD就是DStream操作的时间间隔的最后一个RDD,后面的RDD对前面

的RDD有依赖关系,后面对前面有依赖可以推到出整个依赖链条。

看下官方:

计算从后往前推,计算只需要获取最后一个的RDD的句柄。根据时间从后往前找出

RDD的依赖关系,从而找出对应的空间关系。

看下generateRDD是怎么获取的?

后的rdd和batchDuration对应的rdd,DStream有个getOrComputer方法,根据batchDuration生成rdd的,可以是

缓存或计算级别算出来。

到此处,RDD变量生成了,但是并没有执行,只是在逻辑级别的代码,可以在框架级别进行优化管理。

注意:SparkStreaming实际上在没有输入数据的时候仍然会产生RDD,可以在此处修改源码,提升性能。

新浪微博:http://weibo.com/ilovepains

微信公众号:DT_Spark

博客:http://blog.sina.com.cn/ilovepains

手机:18610086859

QQ:1740415547

邮箱:18610086859@vip.126.com

Spark发行笔记8

解读Spark Streaming RDD的全生命周期的更多相关文章

  1. Spark Streaming源码解读之流数据不断接收和全生命周期彻底研究和思考

    本节的主要内容: 一.数据接受架构和设计模式 二.接受数据的源码解读 Spark Streaming不断持续的接收数据,具有Receiver的Spark 应用程序的考虑. Receiver和Drive ...

  2. 详解服务器性能测试的全生命周期?——从测试、结果分析到优化策略(转载)

    服务器性能测试是一项非常重要而且必要的工作,本文是作者Micheal在对服务器进行性能测试的过程中不断摸索出来的一些实用策略,通过定位问题,分析原因以及解决问题,实现对服务器进行更有针对性的优化,提升 ...

  3. HDD深圳站:全生命周期赋能开发者,华为引领应用生态升级

    12月14日,由华为开发者联盟主办的HDD(HUAWEI Developer Day)于深圳举行.此次HDD主论坛,围绕打造应用全生命周期服务,介绍了华为在创新孵化.开发测试.应用分发和运营增长阶段的 ...

  4. 三张图片详解Asp.Net 全生命周期

    用三张图片详解Asp.Net 全生命周期 下面我们使用三张图片解析ASP.net的整个生命周期,我总感觉使用图片更加的清楚的说明这种问题,所以使用的这样方式 说明: 1  第一张图片从全局说明从客户端 ...

  5. [转载]DevOps建立全生命周期管理

    全生命周期管理(ALM)领域作为企业DevOps实践的总体支撑,应该说是DevOps领域中最为重要的实践领域,也是所有其他实践的基础设施.现在很多企业都非常重视CI/CD自动化工具的引入和推广,但是对 ...

  6. spring-bean(全生命周期)

    作用:在初始化和销毁bean时候,做一些处理工作是调用生命周期方法 格式: <bean id=”该生命周期的名称” class=”提供方法的类的全路径” init-methood=”init” ...

  7. Spark Streaming源码解读之生成全生命周期彻底研究与思考

    本期内容 : DStream与RDD关系彻底研究 Streaming中RDD的生成彻底研究 问题的提出 : 1. RDD是怎么生成的,依靠什么生成 2.执行时是否与Spark Core上的RDD执行有 ...

  8. Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考

    本期内容 : 数据接收架构设计模式 数据接收源码彻底研究 一.Spark Streaming数据接收设计模式   Spark Streaming接收数据也相似MVC架构: 1. Mode相当于Rece ...

  9. Spark Streaming源码解读之Receiver生成全生命周期彻底研究和思考

    本期内容 : Receiver启动的方式设想 Receiver启动源码彻底分析 多个输入源输入启动,Receiver启动失败,只要我们的集群存在就希望Receiver启动成功,运行过程中基于每个Tea ...

随机推荐

  1. linux察看安装包有那些

    rpm -ql  zsh |more  安装完之后,产生那些内容 which zsh rpm -qpl /mnt/packages/ rpm -Uvh /mnt/packages/lrzsz-0.2. ...

  2. 大话Linux内核中锁机制之原子操作、自旋锁【转】

    转自:http://blog.sina.com.cn/s/blog_6d7fa49b01014q7p.html 多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其实 ...

  3. python学习笔记 可变参数关键字参数**kw相关学习

    在Python中可以定义可变参数,顾名思义,可变参数就是传入参数是可变的.可以是任意个,以一个简单的数学编程为例,计算 sum = a * a + b * b + .....z * z 函数定义可以如 ...

  4. tcpip概述

    网络协议通常分为不同层次进行开发,每一层分别负责不同的通信功能.一个类似TCPIP的协议簇是一组不同层次上的多个协议的组合.TCPIP通常被认为是一个四层协议系统,分为:应用层(telnet/FTP/ ...

  5. jQuery 入门笔记1

    jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多). 1:jQuery使用 <script type="te ...

  6. svn突然不能用了!

    case:周五下班将电脑关机,带回家本来打算周末加班的:但是后来周末有事,没有加班,周六和周末电脑根本没有开机.本周一过来开机,打开eclipse准备更新代码的时候,突然发现与资源库同步操作的时候报错 ...

  7. ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)

    ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程)

  8. KVM(三)I/O 全虚拟化和准虚拟化

    在 QEMU/KVM 中,客户机可以使用的设备大致可分为三类: 1. 模拟设备:完全由 QEMU 纯软件模拟的设备. 2. Virtio 设备:实现 VIRTIO API 的半虚拟化设备. 3. PC ...

  9. admin管理工具

    admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLE ...

  10. HDU 6333.Problem B. Harvest of Apples-组合数C(n,0)到C(n,m)求和-组合数学(逆元)+莫队 ((2018 Multi-University Training Contest 4 1002))

    2018 Multi-University Training Contest 4 6333.Problem B. Harvest of Apples 题意很好懂,就是组合数求和. 官方题解: 我来叨叨 ...