zoukankan      html  css  js  c++  java
  • Spark Streaming揭秘 Day23 启动关闭源码图解

    Spark Streaming揭秘 Day23

    启动关闭源码图解

    今天主要分析一下SparkStreaming的启动和关闭过程。

    从Demo程序出发,主要聚焦在两段代码:

    启动代码:
    Snip20160609_7

    关闭代码:
    Snip20160609_6

    启动过程

    StreamingContext是对SparkContext的封装,是个装饰器模式,相当于给SparkCore化妆。

    Snip20160609_9

    其中最关键的参数是Batch Duration,Driver和Executor上的两个定时器都是基于这个参数。

    在构造时创建的关键对象如下:

    1. DStreamGraph,DStream依赖关系构成的有向无环图,rememberDuration可以设置数据存活步长,不太直接使用。
    2. JobScheduler,作业生成之后调度到集群的关键对象。
    3. ContextWaiter,关闭程序时很重要。
    4. progressListener,StreamingJobProcessListener,提供了处理各个进度时点的回调接口,是进行功能定制时主要使用到的。
    5. uiTab,StreamingTab,提供UI的生成。

    运行过程

    以Demo代码为例,socketTextStream中,会把字节数据变成一行一行的数据。
    Snip20160609_8

    深入进去,我们会发现这个代码并没有在此时执行,而是在后续时使用getNext方法来获取。

    Snip20160609_14

    关闭过程

    如下为关闭方法,可以指定超时时间,超过之后会获得停止。
    Snip20160609_10

    具体关闭是一个等待的过程,当中使用到了两个控制变量,如果没有停止或者错误信号,就会一直循环等待。
    Snip20160609_13

    所以,对应有两个两种notify方式用来停止处理,分别对应stop和error情况。
    Snip20160609_12

    小结

    最后,我们将启动和关闭的过程用一个状态机来描述一下:
    IMF-23

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

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

  • 相关阅读:
    名言
    八猫图
    springMVC 上传下载文件
    mongdb 模糊查询
    tomcat结合nginx使用小结
    orale存储过程
    java执行效率低,但效率就低吗?
    Spring aop 原始的工作原理的理解
    spring aop一些名词的理解
    Spring控制反转(IOC)和依赖注入(DI),再记不住就去出家!
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5572806.html
Copyright © 2011-2022 走看看