Spark Streaming揭秘 Day15 No Receivers方式思考 在前面也有比较多的篇幅介绍了Receiver在SparkStreaming中的应用,但是我们也会发现,传统的Receiver虽然使用比较方便,但是还是存在不少问题的,今天主要围绕kafka direct access讨论下,如果抛开Receiver来实现inputDStream该怎么做. KafkaRDD 我们知道,在Spark中,数据的访问主要是通过RDD来进行,而针对Kafka的数据,是使用了KafkaRDD.…
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来做的.抛开任何具体的东西,现在考虑下Spark core是个什么东西. 解析rdd 程序就是数据+代码.所以首先,我们需要考虑spark core由什么数据结构构成,一共就三种:rdd,broadcast,accumulator,最重要.最核心的是rdd. rdd可以简单的认为是一个数组,只不过是一…
Spark Streaming揭秘 Day6 关于SparkStreaming Job的一些思考 Job是SparkStreaming的重要基础,今天让我们深入,进行一些思考. Job是什么? 首先,有个挺重要的概念要区分下,就是SparkStreaming中的Job和Spark core的Job并不相同,可以认为SparkStreaming中的Job是一个应用程序,不同于Spark core中的Job. 从Job的的定义来看,类似于一个Java Bean,核心是其run方法,相当于Java中线…
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…
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揭秘 Day25 StreamingContext和JobScheduler启动源码详解 今天主要理一下StreamingContext的启动过程,其中最为重要的就是JobScheduler的启动. StreamingContext启动 我们首先看下start方法的上半部分. 首先进行模式匹配,这是一个标准的条件判断,默认是INITIALIZED状态. 这里有三个关键部分: validate方法,会进行一些前置条件的判断.其中比较关键的是对DStreamGraph进…
Spark Streaming揭秘 Day23 启动关闭源码图解 今天主要分析一下SparkStreaming的启动和关闭过程. 从Demo程序出发,主要聚焦在两段代码: 启动代码: 关闭代码: 启动过程 StreamingContext是对SparkContext的封装,是个装饰器模式,相当于给SparkCore化妆. 其中最关键的参数是Batch Duration,Driver和Executor上的两个定时器都是基于这个参数. 在构造时创建的关键对象如下: DStreamGraph,DStr…
Spark Streaming揭秘 Day22 架构源码图解 今天主要是通过图解的方式,对SparkStreaming的架构进行一下回顾. 下面这个是其官方标准的流程描述. SparkStreaming会源源不断的接收数据源,然后根据时间切割成不同的Batch,每个Batch都会产生RDD,RDD运行在Spark的引擎之上,处理会产生运行的结果. 我们对其进行细化,可以分解为8个步骤: Step1:获取外部数据源,最经典的来源于Kafka,其它例如Flume.数据库.HBase等 Step2.3…
Spark Streaming揭秘 Day20 动态Batch size实现初探(上) 今天开始,主要是通过对动态Batch size调整的论文的解析,来进一步了解SparkStreaming的处理机制,因为比较偏理论,么有代码演示. 缘起 从目前的业务发展来看,线上处理目前来看已经越来越重要,而一个突出的矛盾就是,传统框架Oracle+j2ee的框架下,存在一个致命的问题,就是无法突破单台机器的局限,可能容纳此刻流入的数据,于是分布式流处理程序越来越火热. 流处理的核心是追求更快的处理速度.但…