Spark Streaming揭秘 Day3

运行基石(JobScheduler)大揭秘

引子

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

1.从启动代码开始

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

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

2.Receiver的老大:ReceiverTracker

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

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

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

3.作业生成器jobGenerator

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

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

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

Spark Streaming揭秘 Day3-运行基石(JobScheduler)大揭秘的更多相关文章

  1. 大数据技术之_19_Spark学习_04_Spark Streaming 应用解析 + Spark Streaming 概述、运行、解析 + DStream 的输入、转换、输出 + 优化

    第1章 Spark Streaming 概述1.1 什么是 Spark Streaming1.2 为什么要学习 Spark Streaming1.3 Spark 与 Storm 的对比第2章 运行 S ...

  2. Update(Stage4):Spark Streaming原理_运行过程_高级特性

    Spark Streaming 导读 介绍 入门 原理 操作 Table of Contents 1. Spark Streaming 介绍 2. Spark Streaming 入门 2. 原理 3 ...

  3. Spark Streaming源码解读之JobScheduler内幕实现和深度思考

    本期内容 : JobScheduler内幕实现 JobScheduler深度思考 JobScheduler 是整个Spark Streaming调度的核心,需要设置多线程,一条用于接收数据不断的循环, ...

  4. Spark Streaming运行流程及源码解析(一)

    本系列主要描述Spark Streaming的运行流程,然后对每个流程的源码分别进行解析 之前总听同事说Spark源码有多么棒,咱也不知道,就是疯狂点头.今天也来撸一下Spark源码. 对Spark的 ...

  5. 大数据开发实战:Spark Streaming流计算开发

    1.背景介绍 Storm以及离线数据平台的MapReduce和Hive构成了Hadoop生态对实时和离线数据处理的一套完整处理解决方案.除了此套解决方案之外,还有一种非常流行的而且完整的离线和 实时数 ...

  6. Spark Streaming 实现思路与模块概述

    一.基于 Spark 做 Spark Streaming 的思路 Spark Streaming 与 Spark Core 的关系可以用下面的经典部件图来表述: 在本节,我们先探讨一下基于 Spark ...

  7. Spark Streaming的优化之路—从Receiver到Direct模式

    作者:个推数据研发工程师 学长     1 业务背景   随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架MapReduce已经不能满足业务,大量的场景需要实时的数据处理结果来进行分析.决 ...

  8. Spark调优 | Spark Streaming 调优

    Spark调优 | Spark Streaming 调优 1.数据序列化 2.广播大变量 3.数据处理和接收时的并行度 4.设置合理的批处理间隔 5.内存优化 5.1 内存管理 5.2优化策略 5.3 ...

  9. Spark Streaming 入门指南

    这篇博客帮你开始使用Apache Spark Streaming和HBase.Spark Streaming是核心Spark API的一个扩展,它能够处理连续数据流. Spark Streaming是 ...

随机推荐

  1. java面试笔试谈

    例一: public class Inc { public static void main(String[] args) { Inc inc=new Inc(); int i=5; inc.ferm ...

  2. org.apache.hadoop.fs-PositionedReadable

    package org.apache.hadoop.fs; import java.io.*; import org.apache.hadoop.fs.*; /** Stream that permi ...

  3. linux-搜索

    grep显示文件中的匹配行     grep  参数  字符串  文件名 -c 输出匹配的行数 -v输出不匹配行 不加参数  :输出匹配的行 经常和管道符一起使用 eg:ps -ef|grep tom ...

  4. [改善Java代码]用枚举实现工厂方法模式更简洁

    工厂方法模式(Factory Method Patter)是"创建对象的接口",让子类决定实例化哪一个类,并使一个类的实例化延迟到其子类.工厂方法模式在我们的开发工作中,经常会用到 ...

  5. Commons CLI - Usage

    Usage Scenarios The following sections describe some example scenarios on how to use CLI in applicat ...

  6. MVC Model Binder

    这篇博客是借助一个自己写的工程来理解model binder的过程. MVC通过路由系统,根据url找到对应的Action,然后再执行action,在执行action的时候,根据action的参数和数 ...

  7. MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

  8. MyEclipse中配置SWT/JFace/SWT-Designer 艰辛路程

    我最近受一个老师所托,写一个小系统,为了更加熟练使用Java,我决定用Java写一个PC软件. 我是一个比较追求完美的孩子,所以虽然老师对界面没啥要求,但是为了加快速度和界面美观,果断选择SWT/JF ...

  9. Java Servlet-入门

    配置 servlet <servlet> <servlet-name>one</servlet-name> <servlet-class>servlet ...

  10. Chrome 控制台不完全指南【转载】

    Chrome的开发者工具已经强大到没朋友的地步了,特别是其功能丰富界面友好的console,使用得当可以有如下功效: 更高「逼格」更快「开发调试」更强「进阶级的Frontender」 Bug无处遁形「 ...