摘要:
Spark Streaming揭秘 Day24 Transformation和action图解 今天我们进入SparkStreaming的数据处理,谈一下两个重要的操作Transfromation和action背后的故事。 InputReceiver 根据前面的课程,我们知道Transformati 阅读全文
摘要:
Spark Streaming揭秘 Day23 启动关闭源码图解 今天主要分析一下SparkStreaming的启动和关闭过程。 从Demo程序出发,主要聚焦在两段代码: 启动代码: 关闭代码: 启动过程 StreamingContext是对SparkContext的封装,是个装饰器模式,相当于给S 阅读全文
摘要:
Spark Streaming揭秘 Day22 架构源码图解 今天主要是通过图解的方式,对SparkStreaming的架构进行一下回顾。 下面这个是其官方标准的流程描述。 SparkStreaming会源源不断的接收数据源,然后根据时间切割成不同的Batch,每个Batch都会产生RDD,RDD运 阅读全文
摘要:
Spark Streaming揭秘 Day21 动态Batch size实现初探(下) 接昨天的描述,今天继续解析动态Batch size调整的实现。 算法 动态调整采用了Fix point迭代算法,其本质是一种回归计算,算法如下: 有点类似机器学习,学习当前SparkStreaming的状况,根据 阅读全文
摘要:
Spark Streaming揭秘 Day20 动态Batch size实现初探(上) 今天开始,主要是通过对动态Batch size调整的论文的解析,来进一步了解SparkStreaming的处理机制,因为比较偏理论,么有代码演示。 缘起 从目前的业务发展来看,线上处理目前来看已经越来越重要,而一 阅读全文
摘要:
Spark Streaming揭秘 Day19 架构设计和运行机制 今天主要讨论一些SparkStreaming设计的关键点,也算做个小结。 DStream设计 首先我们可以进行一个简单的理解:DStream就是加上时间维度的RDD。RDD的模板是DStream,DAG的模板是DStreamGrap 阅读全文
摘要:
Spark Streaming揭秘 Day18 空RDD判断及程序中止机制 空RDD的处理 从API我们可以知道在SparkStreaming中,对于RDD的操作一般都是在foreachRDD和Transform方法里。 在使用foreachRDD时,有一个风险,就是如果RDD为空可能会导致计算失败 阅读全文
摘要:
Spark Streaming揭秘 Day17 资源动态分配 今天,让我们研究一下一个在Spark中非常重要的特性:资源动态分配。 为什么要动态分配?于Spark不断运行,对资源也有不小的消耗,在默认情况下,Spark采用的是粗粒度分配,那么低峰值时会产生大量的资源浪费。 比较有意思的是,在Spar 阅读全文
摘要:
Spark Streaming揭秘 Day16 数据清理机制 今天主要来讲下Spark的数据清理机制,我们都知道,Spark是运行在jvm上的,虽然jvm本身就有对象的自动回收工作,但是,如果自己不进行管理的,由于运行过程中大量产生对象,内存很快就会耗尽。我们可以认为数据清理就是SparkStrea 阅读全文
摘要:
Spark Streaming揭秘 Day15 No Receivers方式思考 在前面也有比较多的篇幅介绍了Receiver在SparkStreaming中的应用,但是我们也会发现,传统的Receiver虽然使用比较方便,但是还是存在不少问题的,今天主要围绕kafka direct access讨 阅读全文