Spark streaming的执行流程
http://www.cnblogs.com/shenh062326/p/3946341.html 其实流程是从这里转载下来的,我只是在流程叙述中做了一下的标注。 当然为了自己能记住的更清楚,我没有直接copy而是打出来的。

1、客户端提交作业后,启动Driver,Driver是Spark作业的Master(也就是通过Driver来启动Receiver,定时去启动任务的处理,注意的是,驱动启动任务会受前一个任务执行的影响。也就是前一个任务没有执行完成后,是不会启动后边的任务的。 所以,注意你的streaming的执行时间,绝对不要超过Recive数据的时间)
2、每个作业包含多个Executor,每个Executor以线程的方式运行task,Spark Streaming至少包含一个Receiver task。(一个Executor就是一个spark进程,在yarn中就是一个container,这个大家应该知道。然后Receiver task是在driver中创建的,我理解一个Receiver是运行在一个Executor中的。然后如果想要创建多个Receiver,那么需要大概这样做(1 to 10).map(_.createStream....),这样就能创建10个receiver task啦。 注意这个数量当然不能超过你的结点数量啦。 还有个问题,通常使用kafka比较合适,因为kafka是stream向kafka来poll数据。而他妈的flume默认只支持pull,如果想支持poll,那需要定制sink,那真是太恶心了。)
3、Receiver接收数据后生成Block,并把BlockId汇报给Driver,然后备份到另外一个Executor上。(默认情况下接受数据是200毫秒生成一个block,我理解一个block应该是一个partition?这个还不确定,需要对照源代码看一下;然后会把生成的Block随机扔到不同的Executor,同时,driver去派发任务时,也会找到就近的Executor。我理解,节点中的所有executor都应该会有数据才对)
4、ReceiverTracker维护Receiver汇报的BlockId。(这个ReceiverTracker应该是维护在Driver中,Driver会根据维护的这些数据块进行任务的派发)
5、Driver定时生成JobGenerator,根据DStream的关系生成逻辑RDD,然后创建Jobset,交给JobScheduler。
6、JobScheduler负责调度Jobset,交给DAGScheduler,DAGScheduler根据逻辑RDD,生成相应的Stages,每个stage包含一到多个task。(我记得DAGScheduler会对任务做一层优化)
7、TaskScheduler负责把task调度到Executor上,并维护task的运行状态。
8、当tasks,stages,jobset完成后,单个batch才算完成。
Spark streaming的执行流程的更多相关文章
- Spark SQL底层执行流程详解
本文目录 一.Apache Spark 二.Spark SQL发展历程 三.Spark SQL底层执行原理 四.Catalyst 的两大优化 一.Apache Spark Apache Spark是用 ...
- Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...
- .Spark Streaming(上)--实时流计算Spark Streaming原理介
Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍 http://www.cnblogs.com/shishanyuan/p/474 ...
- spark streaming的理解和应用
1.Spark Streaming简介 官方网站解释:http://spark.apache.org/docs/latest/streaming-programming-guide.html 该博客转 ...
- 实时流计算Spark Streaming原理介绍
1.Spark Streaming简介 1.1 概述 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理.支持从多种数据源获取数据,包 ...
- Spark Streaming之一:整体介绍
提到Spark Streaming,我们不得不说一下BDAS(Berkeley Data Analytics Stack),这个伯克利大学提出的关于数据分析的软件栈.从它的视角来看,目前的大数据处理可 ...
- Spark Streaming运行流程及源码解析(一)
本系列主要描述Spark Streaming的运行流程,然后对每个流程的源码分别进行解析 之前总听同事说Spark源码有多么棒,咱也不知道,就是疯狂点头.今天也来撸一下Spark源码. 对Spark的 ...
- Spark Streaming连接TCP Socket
1.Spark Streaming是什么 Spark Streaming是在Spark上建立的可扩展的高吞吐量实时处理流数据的框架,数据可以是来自多种不同的源,例如kafka,Flume,Twitte ...
- Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN
Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...
随机推荐
- oracle存储过程批量插入测试数据
前几天测试中债时,自定义资产有一级类型和二级类型,一级类型下有很多分类,每个分类下又有很多二级分类,而要做的是每种类型都要建立一个自定义资产,并做一笔交易,然后测试是否出值,于是写了一个存储过程批量插 ...
- Python GIL全局解释器锁
'''在python原始解释器Cpython中存在GIL(Global Interpreter Lock,全局解释器锁),因此在执行Python代码 时,会产生互斥锁来限制线程对共享资源的访问,指导接 ...
- POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)
POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...
- NO.5: 了解C++编译器默认为你生成的构造/赋值/析构
1.编译器可以暗自位class生成default构造,copy构造,copy assigned函数,析构函数; note1:如果没有自定义构造函数,编译器会为你生成合成默认构造函数.如果有定义则不生成 ...
- std::bind常见的坑
http://note.youdao.com/noteshare?id=bce9cdea8e94501186b5ba3026af685f
- Linux系统下/tmp目录文件重启后自动删除,不重启自动删除10天前的/TMP的文件(转)
/tmp目录文件重启后自动删除现在知道有ubuntu和solaris系统source:http://blog.chinaunix.net/uid-26212859-id-3567875.html经常会 ...
- Linux ------清除内存中的cache
首先以Centos6.4的来说,Centos7有些区别 一.buffer/cache/swap的介绍 #cat /etc/redhat-release #查看系统版本 CentOS release ...
- dedecms在linux上安装提示没权限解决办法
web服务器运行的用户与目录所有者用户必须不一样,比如apache运行的用户为root,那么网站目录设置的所有者就应该不能设置为root,而是设置不同于root的用户,如apache. 我们这里假设w ...
- springboot(五):springboot整合shiro-登录认证和权限管理
http://z77z.oschina.io/ http://www.cnblogs.com/aqsunkai/category/982003.html https://www.cnblogs.com ...
- [整] Android ListView 去除边缘阴影、选中色、拖动背景色等
以下是通过XML定义的方式实现,如果需要通过代码实现,找到对应是set方式设置即可. 去除ListView滑到顶部和底部时边缘的黑色阴影: android:fadingEdge="none& ...