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. iOS AR技术初体验,使用EasyAR示例程序的小白指南

    QQ前两天的传递火炬,是我第一次直接接触到AR.(虽然之前听同事说过,因为他喜欢玩游戏,PS.3DS等等都玩过,这个技术最开始就是从这里出现的).所以感觉很有趣,就想自己也试着搞一下玩玩...下面是我 ...

  2. PHP.1-网站开发概述

    网站开发概述 网站开发从本质来说,就是软件开发 1.B/S软件体系统结构 BS:浏览器与服务器的结构[降低客户端电脑的负荷,减轻维护成本,对CS的改进,可随时随地进行业务处理] #对美工要求比较高,注 ...

  3. Columbus’s bargain

    Columbus’s bargain Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. 杂乱无章之javascript(一)

    1.in 要求第一个(左边的)操作数必须是字符串类型或是可以转化成字符串类型的其他类型,而第二(右边的)操作数必须是数组或对象.只有第一个操作数的值是第二个操作数的属性名,才会返回true,否则返回f ...

  5. ASP.NET弹出模态对话框【转】

    主页面 PageBase.aspx.cs 中的代码 protected void Page_Load(object sender, EventArgs e) {    if (!this.IsPost ...

  6. scrapy yield Request

    import scrapy from myproject.items import MyItem class MySpider(scrapy.Spider): name = ’example.com’ ...

  7. oracle锁

    1.概念 数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁). 当数据对象被加上排它锁时,其他的事务不能对它读取和修改:加了共享锁的 ...

  8. ORACLE临时表 转 学习用

    转:http://www.2cto.com/database/201210/163979.html 临时表:像普通表一样,有结构,但是对数据的管理上不一样,临时表存储事务或会话的中间结果集,临时表中保 ...

  9. Oracle数据库数据同步方案

    一.比较原始的方案:触发器/Job/快照+dblink的方式,可实现同步和定时刷新: 二台不同的数据库服务器,从一台数据库服务器A的一个用户读取另一台数据库服务器B下某个用户的数据,可以通过dblin ...

  10. .net平台 .net Framework 组织结构 .net Framework类库 CLR C# 介绍

    一..net平台 .NET现在可以看成微软的一个品牌,微软有两个非常成功的品牌,那就是Windows和Office. .NET会成为微软的另一个品牌.它不仅仅是一组技术,产品,或服务(微软的服务包括M ...