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

  • 相关阅读:
    linux中tar命令用法
    CentOS 7安装 ifconfig 管理命令
    CentOS 7安装 ifconfig 管理命令
    VMware 创建设置虚拟网卡
    VMware 创建设置虚拟网卡
    C#MongoDB Driver $in
    C#MongoDB Driver $in
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(有舵机)
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(有舵机)
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(无舵机)
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5536482.html
Copyright © 2011-2022 走看看