- 浏览: 41810 次
最新评论
-
zhou_yuefei:
tianyi1 写道赞一个,抓住核心点了谢谢
深入解析单例线程安全问题 -
zhou_yuefei:
steafler 写道解释的很好谢谢
深入解析单例线程安全问题 -
steafler:
解释的很好
深入解析单例线程安全问题 -
tianyi1:
赞一个,抓住核心点了
深入解析单例线程安全问题
文章列表
7.spark Streaming 技术内幕 : 从DSteam到RDD全过程解析
原创文章,转载请注明:转载自 周岳飞博客(http://zhou-yuefei.iteye.com/)
上篇博客讨论了Spark Streaming 程序动态生成Job的过程,并留下一个疑问: JobScheduler将动态生成的Job提交,然后 ...
一、Spark 运行架构
Spark 运行架构如下图:
各个RDD之间存在着依赖关系,这些依赖关系形成有向无环图DAG,DAGScheduler对这些依赖关系形成的DAG,进行Stage划分,划分的规则很简单,从后往前回溯,遇到窄依赖加入本stage,遇见宽依赖进行Stage切分。完成了Stage的划分,DAGScheduler基于每个Stage生成TaskSet,并将TaskSet提交给TaskScheduler。TaskScheduler 负责具体的task调度,在Worker节点上启动task。
二、源码解析:DAGScheduler中的DAG划分
...
原创文章,转载请注明:转载自听风居士博客(http://zhou-yuefei.iteye.com/)
本期内容:
一、Spark Streaming 数据清理总览
二、Spark Streaming 数据清理过程详解
三、Spark Streaming 数据清理的触发机制
首先简单解释一下什么是state(状态)管理?我们以wordcount为例。每个batchInterval会计算当前batch的单词计数,那如果需要计算从流开始到目前为止的单词出现的次数,该如计算呢?SparkStreaming提供了两种方法:updateStateByKey和mapWithState 。mapWithState 是1.6版本新增功能,目前属于实验阶段。mapWithState具官方说性能较updateStateByKey提升10倍。那么我们来看看他们到底是如何实现的。
一、updateStateByKey 解析
1.1 updateStateByKey 的使 ...
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明,否则将追究法律责任。
在前几期文章里讲了带Receiver的Spark Streaming 应用的相关源码解读,但是现在开发Spark Streaming的应用越来越多的采用No Receivers(Direct Approach)的方式,No Receiver的方式的优势: 1. 更强的控制自由度 2. 语义一致性
其实No Receivers的方式更符合我们读取数据,操作数据的思路的。因为Spark 本身是一个计算框架,他底层会有数据来源,如果没有Receivers,我们直接 ...
一、Spark Streaming 数据安全性的考虑:
Spark Streaming不断的接收数据,并且不断的产生Job,不断的提交Job给集群运行。所以这就涉及到一个非常重要的问题数据安全性。
Spark Streaming是基于Spark Core之上的,如果能够确保数据安全可好的话,在Spark Streaming生成Job的时候里面是基于RDD,即使运行的时候出现问题,那么Spark Streaming也可以借助Spark Core的容错机制自动容错。
对Executor容错主要是对数据的安全容错
为啥这里不考虑对数据计算的容错:计算的时候Spark Streaming ...
原创文章,转载请注明:转载自 听风居士博客(http://zhou-yuefei.iteye.com/)
上篇文章详细解析了Receiver不断接收数据的过程,在Receiver接收数据的过程中会将数据的元信息发送给ReceiverTracker:
本文将详细解析ReceiverTracker的的架构设计和具体实现
一、ReceiverTracker的主要功能
ReceiverTracker的主要功能有:
1.在Executor上启动Receivers
原创文章,转载请注明:转载自 听风居士博客(http://zhou-yuefei.iteye.com/)
在上一篇中介绍了Receiver的整体架构和设计原理,本篇内容主要介绍Receiver在Executor中数据接收和存储过程
原创文章,转载请注明:转载自 听风居士博客(http://zhou-yuefei.iteye.com/)
Spark streaming 程序需要不断接收新数据,然后进行业务逻辑处理,而用于接受数据的就是Recever。显然Receiver的正常运行对应整个Spark Stream ...
原创文章,转载请注明:转载自 周岳飞博客(http://zhou-yuefei.iteye.com/)
Spark streaming 程序的运行过程是将DStream的操作转化成RDD的操作,Spark Streaming 和 Spark Core 的关系如下图(图片来自spark官网)
Spark Streaming 会按照程序设 ...
原创文章,转载请注明:转载自 周岳飞博客(http://zhou-yuefei.iteye.com/)
Spark streaming 程序的运行过程是将DStream的操作转化成RDD的操作,Spark Streaming 和 Spark Core 的关系如下图(图片来自spark官网)
Spark Streaming 会按照程序设定的时间间隔不断动态生成Job来处理输入数据,这里的Job生成是指将Spark Streaming 的程序翻译成Spark内核的RDD操作,翻译的过程并不会触发Job的运行,Spark Streaming 会将翻译的处理逻辑封装在Job对象 ...
1 spark streaming 程序代码实例
代码如下:
object OnlineTheTop3ItemForEachCategory2DB {
def main(args: Array[String]){
val
一.Spark streaming Job 架构
SparkStreaming框架会自动启动Job并每隔BatchDuration时间会自动触发Job的调用。
Spark Streaming的Job 分为两大类:
每隔BatchInterval时间片就会产生的一个个Job,这里的Job并不是Spark Core中的Job,它只是基于DStreamGraph而生成的RDD的DAG而已;从Java角度讲相当于Runnable接口的实现类,要想运行Job需要将Job提交给JobScheduler,在JobScheduler内部会通过线程池的方式创建运行Job的一个个线程,当找到一个空闲的 ...
一:TaskScheduler原理解密
1, DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler的,这符合面向对象中依赖抽象而不依赖的原则,带来底层资源调度器的可插拔性,导致Spark可以运行的众多的资源调度器模式上,例如Standalone、Yarn、Mesos、Local、EC2、其它自定义的资源调度器;在Standalone的模式下我们聚焦于Tas
一:为什么需要Sort-Based Shuffle?
1, Shuffle一般包含两个阶段任务:
第一部分:产生Shuffle数据的阶段(Map阶段,额外补充,需要实现ShuffleManager中的getWriter来写数据(数据可以通过BlockManager写到Memory,Disk,Tachyon