zoukankan      html  css  js  c++  java
  • Spark Streaming揭秘 Day3-运行基石(JobScheduler)大揭秘

    Spark Streaming揭秘 Day3

    运行基石(JobScheduler)大揭秘

    引子

    作为一个非常强大框架,Spark Streaming兼具了流处理和批处理的特点。还记得第一天的谜团么,众多的Job形成了其血肉,而其背后都是有JobScheduler来支撑,这也是Spark Streaming运行的基石。这块代码非常的简明,让我们学习一下。

    1.从启动代码开始

    从ssc的启动代码中,一眼就能发现,最重要的部分就是JobScheduler的启动
    Snip20160504_37

    再次深入,我们发现实际上是启动了两个组件:receiverTracker和jobGenerator。两个组件共同工作,完成调度任务。
    Snip20160504_35

    2.Receiver的老大:ReceiverTracker

    Receiver是Spark Streaming的一大特色,可以用来自动的获取外部的数据源输入,但是由于分布式的特点,管理必不可少,这个管理程序就是ReceiverTracker

    ReceiverTracker的作用主要是两点:
    1.对Receiver的运行进行管理,ReceiverTracker启动时会调用lanuchReceivers()方法,进而会使用rpc通信启动Receiver(实际代码中,Receiver外面还有一层包装ReceiverSupervisor实现高可用)
    Snip20160504_40

    2.管理Receiver的元数据,供Job对数据进行索引,元数据的核心结构是receivedBlockTracker
    Snip20160504_39

    3.作业生成器jobGenerator

    作业生成是动态的过程,随着时间的流逝会不断生成,Job怎么生成? 从代码来看,非常的简单。

    Snip20160504_36

    其核心就是如上的timer,每个BatchInterval会产生一个具体的Job(基于DstreamGraph而生成的RDD的DAG),相当于Runnable的接口实例,在JobScheduler中通过单独的线程来提交Job到集群运行。
    Snip20160504_41

    jobExecutor就是线程池,采用线程池优点:
    1.线程复用,提高性能
    2.提供多线程的支持(FAIR模式)

    4.容错能力

    我们发现,Job最终仍是采用调用Spark core来完成,这样,数据安全性的保证方法就会比较多样化。

    保障数据安全性的方法包括:
    1.MEM_AND_DISK_2
    2.WAL预写日志
    3.用Kafka进行日志的回放(最推荐)

    保障任务安全性的方法包括:
    1.Executor:靠RDD的机制来容错
    2.Driver:每个Job生成前进行checkpoint,进行恢复

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

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

  • 相关阅读:
    谈谈对Javascript构造函数和原型对象的理解
    JS 实现无缝滚动动画原理(初学者入)
    $($('.className').html( )选择器的工作原理
    jquery中attr和prop的区别
    用for循环筛选奇偶表格栏
    insertBefore 和 insetAfter函数详解
    getNextElement( )函数——获取下一个特定的元素节点
    IDEA + SSH OA 第一天(项目收获:Hibernate XML)
    IDEA + SSH OA 第一天(IDEA 文件夹类型了解)
    IDEA + SSH OA 第一天(Hibernate : Mapping (RESOURCE) not found)
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5460268.html
Copyright © 2011-2022 走看看