Spark Streaming揭秘 Day4 事务一致性Exactly one 引子 对于业务处理系统,事务的一致性非常的关键,事务一致性(Exactly one),简单来说,就是输入数据一定会被处理,且只会被处理一次.下面来研究下Spark Streaming是如何做到这点的.我想说的是,Spark Streaming是一个非常优秀的软件,通过对它的研究,能对我们在类似领域的其他软件工作有所借鉴. 1.总体机制 从整个Spark Streaming的整体处理流程来分析,在上节已经介绍了,数据管…
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming 在Spark2.x中,Spark Streaming获得了比较全面的升级,称为Structured Streaming,和之前的很不同,功能更强大,效率更高,跟其他的组件整合性也更好. 连续应用程序continuous application 首先,也是最重要的,在2.x中,提出了一个叫做continuous applications连续应用程序的概念. 如下图所示,数据从Kaf…
Spark Streaming揭秘 Day15 No Receivers方式思考 在前面也有比较多的篇幅介绍了Receiver在SparkStreaming中的应用,但是我们也会发现,传统的Receiver虽然使用比较方便,但是还是存在不少问题的,今天主要围绕kafka direct access讨论下,如果抛开Receiver来实现inputDStream该怎么做. KafkaRDD 我们知道,在Spark中,数据的访问主要是通过RDD来进行,而针对Kafka的数据,是使用了KafkaRDD.…
Spark Streaming揭秘 Day5 初步贯通源码 引子 今天,让我们从Spark Streaming最重要的三个环节出发,让我们通过走读,逐步贯通源码,还记得Day1提到的三个谜团么,让我们开始解密吧. 1.创建StreamingContext StreamingContext是Spark Streaming是运行基础,也是负责管理和其运行的重要组件. 我们需要特别注意下面这段代码: 可以看到,StreamingContext内部包涵了一个SparkContext,这个可以告诉我们St…
Spark Streaming揭秘 Day2 五大核心特征 引子 书接上回,Streaming更像Spark上的一个应用程序,会有多个Job的配合,是最复杂的Spark应用程序.让我们先从特征角度进行理解. 特征1:逻辑管理 DStream是对RDD封装的集合,作用于DStream的操作会对其中每个RDD进行作用,DStream Graph就是RDD Graph的模板,其逻辑管理完全继承RDD的DAG关系. 特征2:时间管理 Spark Streaming的最大特征是引入了时间属性,DStrea…
Spark Tungsten揭秘 Day4 内存和CPU优化使用 今天聚焦于内存和CPU的优化使用,这是Spark2.0提供的关于执行时的非常大的优化部分. 对过去的代码研究,我们会发现,抽象的提高,转过来会变成对CPU和内存的使用.也就是说,抽象提升,会对内存对Cpu会有很多不必要的使用,执行很多无谓的没有实际作用的操作.比如面向接口调用,就是使用了指针的指针,接口这层并没有实际的作用,可以直接跳过. whole-stage code Spark2.x的Tungsten中做了个非常重要的改进,…
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来做的.抛开任何具体的东西,现在考虑下Spark core是个什么东西. 解析rdd 程序就是数据+代码.所以首先,我们需要考虑spark core由什么数据结构构成,一共就三种:rdd,broadcast,accumulator,最重要.最核心的是rdd. rdd可以简单的认为是一个数组,只不过是一…
Spark Streaming揭秘 Day34 解析UI监听模式 今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式.监听器模式是指,首先注册事件源,当事件或者数据发生改变时,监听器就会接收到这个改变,并对这种改变做出响应,监听器模式可以简单的理解为一种MVC的模式. SparkStreaming中的UI系统有两个非常的支持,就是处理时间process time和Batch等待时间Scheduler Delay.一…
Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的使用.另外,会看下在应用程序重新启动时,是如何处理checkpoint的. Checkpoint保存什么 checkpoint作为容错的设计,基本思路是把当前运行的状态,保存在容错的存储系统中(一般是hdfs).对于容错的处理,肯定是围绕作业紧密相关的,保存内容包括元数据和数据两部分. 从元数据角度…
Spark Streaming揭秘 Day32 WAL框架及实现 今天会聚焦于SparkStreaming中非常重要的数据安全机制WAL(预写日志). 设计要点 从本质点说,WAL框架是一个存储系统,可以简单的认为是一个文件系统,其作用类似于BlockManager, 我们首先看一下官方的说明: 这里有三个要点: 总体上,sparksteaming是用WAL去保存接收到的数据,并且在写入数据后,要把元数据汇报给Driver,这样失败了才能恢复起来. 每当写入一个log,就返回一个handle,h…