zoukankan      html  css  js  c++  java
  • Spark Streaming源码解读之数据清理内幕彻底解密

    本期内容 :

    • Spark Streaming数据清理原理和现象
    • Spark Streaming数据清理代码解析

      Spark Streaming一直在运行的,在计算的过程中会不断的产生RDD ,如每秒钟产生一个BachDuration同时也会产生RDD,

      在这个过程中除了基本的RDD外还有累加器、广播变量等,对应Spark Streaming也有自己的对象、源数据及数据清理机制,

      在运行中每个BachDuration会触发了Job ,由于会自动产生对象、数据及源数据等运行完成后肯定要自动进行回收 。

      

    一、 数据源 :

      

      创建Kafka ,源数据的操作。

        

        

        

        

    二、 处理数据的输出 :

      从研究其生命周期的话,需要进行下一步 ,输出进行考虑,ForEachRDD属于Materialized(物化),物化也就是存储到外部设备上。

        

        

        

        基于数据来源Kafka,DStreams随着时间的进行会不断的自己的内存数据结构GeneratedRDD中维护一个HashMap ,这个HashMap的时间窗口的RDD的实例,

      按照BachDuration来存储这个RDD及删除RDD。

        

      内存缓存结构,有时会调用Cache的操作,其实是对DStreams进行标记,指定StorageLevel最终作用于RDD ,也会有相关的Cache操作。

        

    三、 JobGenerator 清理的过程 :

      不断循环的产生事件(消息循环器) :

        

        

        

        

      事件触发以时间为单位:

        

        

        

         Spark Streaming在每次一个作业处理完成之后,也就是每个BachDuration处理完成之后都会进行清理,首先是输出的DStreams进行清理,然后对他的依赖关系进行清理,

      清理的时候,默认下是会清理RDD的数据等相关的部分,及Metadata元数据的清理。

  • 相关阅读:
    [I cannot be cast to java.lang.Comparable
    关于有参构造的调用问题
    方法中的参数问题
    mybatis中xml的sql语句传入参数的不同用的#{}中的参数也不相同
    javaweb中向集合中添加对象报空指针异常问题的可能原因
    找不到log4j类的问题可能的原因
    快速失败和安全失败(别人写的,摘抄过来了)
    自动生成的列在xml中写sql代码插入时不写入,但是其余属性要都列出来
    JQ高级
    JQ初级
  • 原文地址:https://www.cnblogs.com/yinpin2011/p/5539910.html
Copyright © 2011-2022 走看看