• 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

  • 相关阅读:
    Java Web-session介绍
    Java异常-一般异常和运行时异常的区别
    Spring控制Hibernate的缓存机制ehcache
    Hibernate-缓存
    Hibernate-入门教程
    Java算法-hash算法
    Java算法-各种题目总结
    Java算法-堆排序
    Java算法-快速排序
    Java算法-归并排序
  • 原文地址:https://www.cnblogs.com/dt-zhw/p/5460268.html
Copyright © 2020-2023  润新知