Spark Streaming揭秘 Day13 数据安全容错(Driver篇) 书接上回,首先我们要考虑的是在Driver层面,有哪些东西需要维持状态,只有在需要维持状态的情况下才需要容错,总的来说,一共有三个组件需要容错: 数据层面:ReceiverBlockTracker,专门负责管理整个SparkStreaming运行数据的元数据,主要用来跟踪数据,需要状态. 逻辑层面:DStream和DStreamGraph,表达依赖关系,在恢复的时候需要恢复计算逻辑级别的依赖关系. 作业生成层面:Jo…
Spark Streaming揭秘 Day12 数据安全容错(Executor篇) 今天,让我们研究下SparkStreaming在Executor端的数据安全及容错机制. 在SparkStreaming中一共使用了两种容错方式: 存储数据副本 支持数据重放 副本机制 这是默认的处理方式,先让我们进入数据存储代码: 我们发现,SparkStreaming中存储是直接调用了blockManager中进行,blockManager本身就支持数据副本,是通过stoageLevel字段的定义. 一直往代…
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来做的.抛开任何具体的东西,现在考虑下Spark core是个什么东西. 解析rdd 程序就是数据+代码.所以首先,我们需要考虑spark core由什么数据结构构成,一共就三种:rdd,broadcast,accumulator,最重要.最核心的是rdd. rdd可以简单的认为是一个数组,只不过是一…
Spark Streaming揭秘 Day32 WAL框架及实现 今天会聚焦于SparkStreaming中非常重要的数据安全机制WAL(预写日志). 设计要点 从本质点说,WAL框架是一个存储系统,可以简单的认为是一个文件系统,其作用类似于BlockManager, 我们首先看一下官方的说明: 这里有三个要点: 总体上,sparksteaming是用WAL去保存接收到的数据,并且在写入数据后,要把元数据汇报给Driver,这样失败了才能恢复起来. 每当写入一个log,就返回一个handle,h…
Spark Streaming揭秘 Day4 事务一致性Exactly one 引子 对于业务处理系统,事务的一致性非常的关键,事务一致性(Exactly one),简单来说,就是输入数据一定会被处理,且只会被处理一次.下面来研究下Spark Streaming是如何做到这点的.我想说的是,Spark Streaming是一个非常优秀的软件,通过对它的研究,能对我们在类似领域的其他软件工作有所借鉴. 1.总体机制 从整个Spark Streaming的整体处理流程来分析,在上节已经介绍了,数据管…
Spark Streaming揭秘 Day3 运行基石(JobScheduler)大揭秘 引子 作为一个非常强大框架,Spark Streaming兼具了流处理和批处理的特点.还记得第一天的谜团么,众多的Job形成了其血肉,而其背后都是有JobScheduler来支撑,这也是Spark Streaming运行的基石.这块代码非常的简明,让我们学习一下. 1.从启动代码开始 从ssc的启动代码中,一眼就能发现,最重要的部分就是JobScheduler的启动 再次深入,我们发现实际上是启动了两个组件…
Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的使用.另外,会看下在应用程序重新启动时,是如何处理checkpoint的. Checkpoint保存什么 checkpoint作为容错的设计,基本思路是把当前运行的状态,保存在容错的存储系统中(一般是hdfs).对于容错的处理,肯定是围绕作业紧密相关的,保存内容包括元数据和数据两部分. 从元数据角度…
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming 在Spark2.x中,Spark Streaming获得了比较全面的升级,称为Structured Streaming,和之前的很不同,功能更强大,效率更高,跟其他的组件整合性也更好. 连续应用程序continuous application 首先,也是最重要的,在2.x中,提出了一个叫做continuous applications连续应用程序的概念. 如下图所示,数据从Kaf…
Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountOnline这个Demo. 启动过程 SparkStreaming启动是从如下日志开始: 16/06/16 21:26:44 INFO ReceiverTracker: Starting 1 receivers 16/06/16 21:26:44 INFO ReceiverTracker: Recei…
Spark Streaming揭秘 Day24 Transformation和action图解 今天我们进入SparkStreaming的数据处理,谈一下两个重要的操作Transfromation和action背后的故事. InputReceiver 根据前面的课程,我们知道Transformation是逻辑级别的状态转换,并没有真的发生. 让我们从第一个Transformation,也就是SocketTextStream开始. 这里需要注意的是,这里返回的是字符串类型,这个是通过convert…