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. 琐碎-关于hadoop的GenericOptionsParser类

    GenericOptionsParser 命令行解析器 是hadoop框架中解析命令行参数的基本类.它能够辨别一些标准的命令行参数,能够使应用程序轻易地指定namenode,jobtracker,以及 ...

  2. python(5) - time模块

    import time 1. time.gmtime()       显示当前structtime,格林时间 >>> import time >>> time.gm ...

  3. python(2)-字符串(2)

    字符串格式化: 前面说过一种字符串格式化方法,来复习一下: >>> print('His name is %s', 'jeff') His name is %s jeff 其实格式化 ...

  4. [转]利用vertical-align:middle实现在整个页面居中

    本文转自:http://www.cnblogs.com/xueming/archive/2012/03/21/VerticalAlign.html 如果想让一个div或一张图片相对于整个页面居中,用v ...

  5. [改善Java代码]不要在finally块中处理返回值

    在finally代码块中处理返回值,这是在面试题中经常出现的题目.但是在项目中绝对不能再finally代码块中出现return语句,这是因为这种处理方式非常容易产生"误解",会严重 ...

  6. hdu 2844 多重背包+单调队列优化

    思路:把价值看做体积,而价值的大小还是其本身,那么只需判断1-m中的每个状态最大是否为自己,是就+1: #include<iostream> #include<algorithm&g ...

  7. FragmentTabHost切换Fragment时避免重复加载UI

    使用FragmentTabHost时,Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态. 解决办法:在Frag ...

  8. codevs4373 窗口==poj2823 Sliding Window

    Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 53676   Accepted: 15399 ...

  9. css3 过渡记

    CSS3 过渡 CSS3的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击,获得焦点,被点击或对元素任何改变中触发,并平滑地以动画效果改变CSS的属性值. t ...

  10. JQGrid各种参数详解API(转载)

    下面是转自其他人blog的一个学习资料,与其说是学习资料,说成查询帮助文档更加合适. jqGrid学习之 ------------- 安装 jqGrid安装很简单,只需把相应的css.js文件加入到页 ...