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

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

Spark Streaming揭秘 Day16 数据清理机制相关推荐

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

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

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

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

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

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

  4. sparkstreaming监听hdfs目录_大数据系列之Spark Streaming接入Kafka数据

    Spark Streaming官方提供Receiver-based和Direct Approach两种方法接入Kafka数据,本文简单介绍两种方式的pyspark实现. 1.Spark Streami ...

  5. SkyWalking 数据清理机制(TTL)

    版本:7.0.0 描述 通过采样率设置,我们可以配置采样的数据量,如80%,50%等,这样做的目的是避免采集过分多的数据.但是,这样会丢失一些信息,如果恰好我们想查看的数据丢失了,就会导致排查问题难度 ...

  6. spark streaming 接收 kafka 数据java代码WordCount示例

    1. 首先启动zookeeper 2. 启动kafka 3. 核心代码 生产者生产消息的java代码,生成要统计的单词 package streaming;import java.util.Prope ...

  7. Spark Streaming读取Kafka数据的两种方式

    Kafka在0.8和0.10之间引入了一种新的消费者API,因此,Spark Streaming与Kafka集成,有两种包可以选择: spark-streaming-kafka-0-8与spark-s ...

  8. DStream实战之Spark Streaming接收socket数据实现WordCount 31

    需求 现在想要通过socket发送数据, 然后Spark Streaming接收数据并且统计socket发送的每个单词的个数. 1. 架构图 2. 实现流程 安装并启动生产者 首先在linux服务器上 ...

  9. Flume+Kafka+Spark Streaming实现大数据实时流式数据采集

    近年来,随着企业信息化建设的飞速发展,大数据应用的问题越来越备受关注.很多企业投入大量的人力.物力和财力建设企业大数据平台,平台建设工作涵盖数据采集.数据处理.数据存储.数据服务.数据展示以及数据质量 ...

最新文章

  1. 高速串行总线系列(5)总线的各种基础问题
  2. 用Qt写软件系列五:一个安全防护软件的制作(2)
  3. bfs迷宫寻路问题(一看就懂的讲解)
  4. 真格量化-持仓量第n档卖方主力跟随策略
  5. C语言实现随机抽取纸牌
  6. Java Core系列之ConcurrentHashMap实现(JDK 1.7)
  7. i2c总线注意事项和在linux下使用实战
  8. Python中lambda表达式的语法与应用
  9. extjs的grid应用(java 使用json绑定数据 翻页)
  10. Towards Characterizing the Behavior of LiDARs in Snowy Conditions
  11. 华为mate8 解锁+root手记
  12. 本科大学计算机专业排名2015,2015年美国大学本科计算机专业排名
  13. 网页色彩大攻略(蓝色系)
  14. Qt设置按钮背景图片
  15. 【附源码/完整教程】如何使用C语言打造人机对战版五子棋?
  16. python爬虫--第一个爬虫程序
  17. linux xz文件解压
  18. C++文件服务器项目—FastDFS—1
  19. sqli-labs第四关
  20. xgboost解决业务问题实践——司机流失预测模型

热门文章

  1. 【ADO.NET基础知识】SqlConnection、command、DataSet 、DataTable、dataAdapter
  2. Open 语法的使用
  3. 网站建设中前端常用的jQuery+easing缓动的动画
  4. YUM更换源--yum找不到安装包(转)
  5. 中英文字体名字对应表
  6. 解析IOS控制台利用GDB命令查看报错堆栈
  7. C# Check is No number
  8. C语言-动态内存管理
  9. GDI C++ 位图的绘制
  10. python新手入门英文词汇笔记(1-1)_Python新手入门英文词汇(1-1)