zoukankan      html  css  js  c++  java
  • Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)

    Spark Streaming揭秘 Day31

    集群模式下SparkStreaming日志分析(续)

    今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析。

    让我们跟踪下Job调用过程。

    从框架代码开始

    我们从生成Job开始,generateJobs方法产生了Job,之后,提交了一个JobSet来进行处理。
    Snip20160622_51

    JobSet会根据输出情况来确定Job数量,有多少个输出就有多少个Job,在我们的演示代码中,只有一个outputDStream,所以job是一个。jobExecutor 是个线程池,一次只能运行一个任务。
    Snip20160622_52

    JobHandler是个Runnable对象,其中调用了run方法,而run方法中,就是在业务代码func外,封装了一个Try结构,主要防止程序运行异常时退出。
    Snip20160622_53
    Snip20160622_54

    真相

    到这里为止,我们并没有发现多个Job的产生,而代码已经进入了业务代码部分,也就是说这个机制和SparkStreaming没有任何关系!!!

    通过跟踪业务代码,我们可以锁定了是在这段代码中产生了多个Job,其中,只有rdd.take操作会在集群中运行,所以多个Job是在其中产生的。
    Snip20160622_56

    通过阅读,我们发现take的机制操作是先扫描一个分区,如果没有足够数据的话,会评估并进行下一次扫描,一次最多扫描4个分区。也就是说每一次扫描都会新产生一个Job!!!
    Snip20160622_57

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

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

  • 相关阅读:
    利用锚点制作简单索引效果
    BOM之location对象
    引入CSS
    对象继承
    indexOf、instanceOf、typeOf、valueOf详解
    JSON详解
    浏览器兼容性-JS篇
    gcc堆栈排列的建议(译文)
    VLAN 学习
    DPDK KNI 接口2
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5608356.html
Copyright © 2011-2022 走看看