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. CentOS6.5 一键部署运行环境shell脚本

     ################################################## #  CentOS6.5                                     ...

  2. css3 伪对象选择器添加几何图形文字的方法

    伪对象选择器包含三种,分别为: E::selection E::after E::before 其中before和after必须与content结合使用,如果content想用几何图形要加 \ 进行转 ...

  3. 对x264_macroblock_cache_load的理解

    X264版本: 2004/06/03 函数作用: 将编码该宏块所需的信息加载到mb.pic.mb.cache两个结构体中,记录相邻宏块的存在性. 函数过程: 初始化坐标信息,这些坐标信息将在下面用作下 ...

  4. Mysql 5.6 新特性(转载)

    本文转载自 http://blog.csdn.net/wulantian/article/details/29593803 感谢主人的辛苦整理 一,安全提高 1.提供保存加密认证信息的方法,使用.my ...

  5. python爬虫爬取全球机场信息

    --2013年10月10日23:54:43 今天需要获取机场信息,发现一个网站有数据,用爬虫趴下来了所有数据: 目标网址:http://www.feeyo.com/airport_code.asp?p ...

  6. 获取json对象的id或者根据name获取id

    --用json的时候,知道id获取对应的name或者相反根据name获取id --内核代码 <script> var products=[{ID:1,Name:"a", ...

  7. poj 1716 差分约束

    水水的. 给几个不等式:dis[b]-dis[a]>=2;  0<=dis[i+1]-dis[i]<=1; #include<iostream> #include< ...

  8. C#算法基础之插入排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. hiho 1182 : 欧拉路·三

    1182 : 欧拉路·三 这时题目中给的提示: 小Ho:是这样的,每次转动一个区域不是相当于原来数字去掉最左边一位,并在最后加上1或者0么. 于是我考虑对于"XYYY",它转动之后 ...

  10. ifndef/define/endif作用和用法

    问题:ifndef/define/endif”主要目的是防止头文件的重复包含和编译,偶只知道这个概念不懂的是怎么个用法,和为什么要用它~~高手请指点一下~~谢谢~~~!!! ------------- ...