Spark Streaming揭秘 Day16 数据清理机制
Spark Streaming揭秘 Day16
数据清理机制
今天主要来讲下Spark的数据清理机制,我们都知道,Spark是运行在jvm上的,虽然jvm本身就有对象的自动回收工作,但是,如果自己不进行管理的,由于运行过程中大量产生对象,内存很快就会耗尽。我们可以认为数据清理就是SparkStreaming自己的"GC"。
从DStream开始
RDD是在DStream中产生的,RDD的操作也是在DStream中进行的,所以DStream会负责RDD数据的生命周期。
在DStream中,数据保存一般会有三个部分
首先,前面也反复提到,在DStream中,数据会按照Batch Duration保存在generatedRDDs,也会按照Batch Duration来进行删除
其次,如果执行了cache操作,还会产生persist的数据
最后,在Driver上也会有元数据的保存,释放RDD时,也要考虑。
JobGenerator
从上面的描述,我们可以知道数据是按照Batch Duration产生,所以也会按照Batch Duration来进行清理,那么研究数据清理机制,就可以从定期器着手。
在定时器的回调方法中,我们可以很明显的看到数据清理的核心方法ClearMetadata
这个方法,最终会调用DStream上的clearMetadata方法。
我们可以看到,这个方法主要进行三方面清理:
1.将数据从generatedRDDs中移除。
2.先清理cache,再清理block,block清理是调用了spark core的功能。
3.对依赖的DStream也会进行清理。
需要注意的是,在这个方法中,允许自定义rememberDuration,这个参数可以设置为Duration的整数倍,可以支持跨Batch清理。
JobScheduler
最后一个问题,清理是被什么时候触发的?
首先,在JobHandler运行结束时,最后会触发JobCompleted事件。
其中,会调用onBatchCompletion操作。
最终,会执行上述提到的ClearMetadata方法。
至此,我们了解了数据清理的主要流程和逻辑。
欲知后事如何,且听下回分解
DT大数据每天晚上20:00YY频道现场授课频道68917580
Spark Streaming揭秘 Day16 数据清理机制的更多相关文章
- Spark Streaming揭秘 Day27 Job产生机制
Spark Streaming揭秘 Day27 Job产生机制 今天主要讨论一个问题,就是除了DStream action以外,还有什么地方可以产生Job,这会有助于了解Spark Streaming ...
- 16.Spark Streaming源码解读之数据清理机制解析
原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/) 本期内容: 一.Spark Streaming 数据清理总览 二.Spark Streami ...
- Spark Streaming揭秘 Day10 从BlockGenerator看接收数据的生命周期
Spark Streaming揭秘 Day10 从BlockGenerator看接收数据的生命周期 昨天主要介绍了SparkStreaming中对于Receiver的生命周期管理,下面让我们进入到Re ...
- Spark Streaming揭秘 Day19 架构设计和运行机制
Spark Streaming揭秘 Day19 架构设计和运行机制 今天主要讨论一些SparkStreaming设计的关键点,也算做个小结. DStream设计 首先我们可以进行一个简单的理解:DSt ...
- Spark Streaming揭秘 Day18 空RDD判断及程序中止机制
Spark Streaming揭秘 Day18 空RDD判断及程序中止机制 空RDD的处理 从API我们可以知道在SparkStreaming中,对于RDD的操作一般都是在foreachRDD和Tra ...
- Spark Streaming揭秘 Day32 WAL框架及实现
Spark Streaming揭秘 Day32 WAL框架及实现 今天会聚焦于SparkStreaming中非常重要的数据安全机制WAL(预写日志). 设计要点 从本质点说,WAL框架是一个存储系统, ...
- Spark Streaming揭秘 Day35 Spark core思考
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来 ...
- Spark Streaming揭秘 Day34 解析UI监听模式
Spark Streaming揭秘 Day34 解析UI监听模式 今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式. ...
- Spark Streaming揭秘 Day33 checkpoint的使用
Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...
随机推荐
- eclipse按Crl+鼠标左键,找不到源文件的解决办法。
这种情况一般发生在tomcat的之中,原因是缺少类的源文件.在jdk中很少见,jdk中自带类的源文件,配置jdk的时候就已经将其加载进来了.而tomcat之中没有带类的源文件,需要自己去网上单独下载. ...
- Pretty Poem
Poetry is a form of literature that uses aesthetic and rhythmic qualities of language. There are man ...
- cocos2d-x使用ant批量打包
当项目需要在多渠道上线时,要打很多的渠道包,少则几十个,多种几百个.它们的区别一般只是渠道id或部分配置信息不同,这些信息均可写在配置文件中. 例如常见的渠道id不同,一般定义在AndroidMani ...
- jboss加密敏感信息
默认情况下,我们配置在domain.xml或host.xml文件中的信息都是明文,对一些敏感信息就显得安全性不够,可以使用jboss提供的vault机制来进行加密 下面的内容来自 http://www ...
- python 元类——metaclass
from stack overflow:http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python Classes ...
- Oracle启动的整个过程
1.启动选项 在发出startup命令启动数据库时,oracle将在默认位置$ORACLE_HOME/dbs(UNIX/Linux)中查找初始化参数文件.Oracle将以下面的顺序在其中寻找合适的初始 ...
- Colossal Fibonacci Numbers(巨大的斐波那契数)UVA 11582
评测地址:http://acm.hust.edu.cn/vjudge/problem/41990 The i'th Fibonacci number f (i) is recursively de n ...
- 今天写了几个css属性
<!DOCTYPE html> <html> <head> <meta charset=UTF-8"> <title></t ...
- Jersey(1.19.1) - Conditional GETs and Returning 304 (Not Modified) Responses
Conditional GETs are a great way to reduce bandwidth, and potentially server-side performance, depen ...
- JQGrid各种参数详解API(转载)
下面是转自其他人blog的一个学习资料,与其说是学习资料,说成查询帮助文档更加合适. jqGrid学习之 ------------- 安装 jqGrid安装很简单,只需把相应的css.js文件加入到页 ...