zoukankan      html  css  js  c++  java
  • 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来进行删除
    Snip20160527_34

    其次,如果执行了cache操作,还会产生persist的数据
    Snip20160527_35

    最后,在Driver上也会有元数据的保存,释放RDD时,也要考虑。

    JobGenerator

    从上面的描述,我们可以知道数据是按照Batch Duration产生,所以也会按照Batch Duration来进行清理,那么研究数据清理机制,就可以从定期器着手。

    在定时器的回调方法中,我们可以很明显的看到数据清理的核心方法ClearMetadata
    Snip20160527_36

    这个方法,最终会调用DStream上的clearMetadata方法。
    我们可以看到,这个方法主要进行三方面清理:
    1.将数据从generatedRDDs中移除。
    2.先清理cache,再清理block,block清理是调用了spark core的功能。
    3.对依赖的DStream也会进行清理。
    Snip20160527_38

    需要注意的是,在这个方法中,允许自定义rememberDuration,这个参数可以设置为Duration的整数倍,可以支持跨Batch清理。

    Snip20160527_39

    JobScheduler

    最后一个问题,清理是被什么时候触发的?

    首先,在JobHandler运行结束时,最后会触发JobCompleted事件。
    Snip20160527_41

    其中,会调用onBatchCompletion操作。
    Snip20160527_42

    最终,会执行上述提到的ClearMetadata方法。
    Snip20160527_40

    至此,我们了解了数据清理的主要流程和逻辑。

    欲知后事如何,且听下回分解

    DT大数据每天晚上20:00YY频道现场授课频道68917580

  • 相关阅读:
    通过 WakaTime 统计你写代码的时长
    CCF 202012-3 带配额的文件系统
    1
    prometheus 获取cpu利用率
    springboot使用@data注解,减少不必要代码-lombok插件
    django官方教程部署simpleui时候发现加载不到静态文件解决办法
    echarts关系图研究01
    SpringBoot代码方式禁用Druid Monitor
    virtualbox给已有磁盘扩展容量
    centos7 ssh免密登录配置
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5536482.html
Copyright © 2011-2022 走看看