Apache Spark(学习资料二)

Apache Spark

Spark Streaming源码分析 – Checkpoint
摘要: PersistenceStreaming没有做特别的事情,DStream最终还是以其中的每个RDD作为job进行调度的,所以persistence就以RDD为单位按照原先Spark的方式去做就可以了,不同的是Streaming是无限,需要考虑Clear的问题在clearMetadata时,在删除过期的RDD的同时,也会做相应的unpersist比较特别的是,NetworkInputDStream,... 阅读全文

posted @ 2014-03-12 15:30 fxjwind 阅读(184) | 评论 (0) 编辑

Spark Streaming源码分析 – JobScheduler
摘要: 先给出一个job从被generate到被执行的整个过程在JobGenerator中,需要定时的发起GenerateJobs事件,而每个job其实就是针对DStream中的一个RDD,发起一个SparkContext.runJob,通过对DStream中每个RDD都runJob来模拟流处理 //StreamingContext.scalaprivate[streaming] val schedule... 阅读全文

posted @ 2014-03-10 17:02 fxjwind 阅读(112) | 评论 (0) 编辑

Spark Streaming源码分析 – InputDStream
摘要: 对于NetworkInputDStream而言,其实不是真正的流方式,将数据读出来后不是直接去处理,而是先写到blocks中,后面的RDD再从blocks中读取数据继续处理这就是一个将stream离散化的过程NetworkInputDStream就是封装了将数据从source中读出来,然后放到blocks里面去的逻辑(Receiver线程)还需要一个可以管理NetworkInputDStream,... 阅读全文

posted @ 2014-03-07 18:08 fxjwind 阅读(126) | 评论 (0) 编辑

Spark Streaming源码分析 – DStream
摘要: A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous sequence of RDDs (of the same type) representing a continuous stream of data.Dstream本质就是离散化的stream,将stream离散化成... 阅读全文

posted @ 2014-03-06 18:15 fxjwind 阅读(146) | 评论 (0) 编辑

Spark Streaming Programming Guide
摘要: 参考,http://spark.incubator.apache.org/docs/latest/streaming-programming-guide.html Overview SparkStreaming支持多种流输入,like Kafka, Flume, Twitter, ZeroMQ or plain old TCP sockets,并且可以在上面进行transform操作,最终数据存入... 阅读全文

posted @ 2014-02-21 18:19 fxjwind 阅读(290) | 评论 (0) 编辑

Spark 源码分析 -- task实际执行过程
摘要: Spark源码分析 – SparkContext 中的例子, 只分析到sc.runJob 那么最终是怎么执行的? 通过DAGScheduler切分成Stage, 封装成taskset, 提交给TaskScheduler, 然后等待调度, 最终到Executor上执行 val sc = new SparkContext(……)val textFile = sc.textFile("READ... 阅读全文

posted @ 2014-01-21 16:38 fxjwind 阅读(437) | 评论 (6) 编辑

Spark源码分析 – 汇总索引
摘要: http://jerryshao.me/categories.html#architecture-ref http://blog.csdn.net/pelick/article/details/17222873 如果想了解Spark的设计, 第一个足够 如果想梳理Spark的源码整体结构, 第二个也可以 ALL Spark源码分析 – SparkContext Spark源码分... 阅读全文

posted @ 2014-01-16 14:29 fxjwind 阅读(484) | 评论 (0) 编辑

Spark源码分析 – Shuffle
摘要: 参考详细探究Spark的shuffle实现, 写的很清楚, 当前设计的来龙去脉 Hadoop Hadoop的思路是, 在mapper端每次当memory buffer中的数据快满的时候, 先将memory中的数据, 按partition进行划分, 然后各自存成小文件, 这样当buffer不断的spill的时候, 就会产生大量的小文件 所以Hadoop后面直到reduce之前做的所有的事情其实就是... 阅读全文

posted @ 2014-01-16 11:34 fxjwind 阅读(649) | 评论 (0) 编辑

Spark源码分析 – SparkEnv
摘要: SparkEnv在两个地方会被创建, 由于SparkEnv中包含了很多重要的模块, 比如BlockManager, 所以SparkEnv很重要 Driver端, 在SparkContext初始化的时候, SparkEnv会被创建 // Create the Spark execution environment (cache, map output tracker, etc) ... 阅读全文

posted @ 2014-01-13 10:54 fxjwind 阅读(212) | 评论 (0) 编辑

Spark源码分析 – Checkpoint
摘要: CP的步骤 1. 首先如果RDD需要CP, 调用RDD.checkpoint()来mark 注释说了, 这个需要在Job被执行前被mark, 原因后面看, 并且最好选择persist这个RDD, 否则在存CP文件时需要重新computeRDD内容 并且当RDD被CP后, 所有dependencies都会被清除, 因为既然RDD已经被CP, 那么就可以直接从文件读取, 没有必要保留之... 阅读全文

posted @ 2014-01-10 18:24 fxjwind 阅读(257) | 评论 (7) 编辑

Spark源码分析 – BlockManager
摘要: 参考, Spark源码分析之-Storage模块 对于storage, 为何Spark需要storage模块?为了cache RDD Spark的特点就是可以将RDD cache在memory或disk中,RDD是由partitions组成的,对应于block 所以storage模块,就是要实现RDD在memory和disk上的persistent功能 首先每个节点都有一个Bloc... 阅读全文

posted @ 2014-01-10 11:19 fxjwind 阅读(414) | 评论 (2) 编辑

Spark 源码分析 – BlockManagerMaster&Slave
摘要: BlockManagerMaster 只是维护一系列对BlockManagerMasterActor的接口, 所有的都是通过tell和askDriverWithReply从BlockManagerMasterActor获取数据 比较鸡肋的类 private[spark] class BlockManagerMaster(var driverActor: ActorRef) ex... 阅读全文

posted @ 2014-01-10 11:03 fxjwind 阅读(215) | 评论 (2) 编辑

Spark 源码分析 -- BlockStore
摘要: BlockStore 抽象接口类, 关键get和put都有两个版本序列化, putBytes, getBytes非序列化, putValues, getValues 其中putValues的返回值为PutResult, 其中的data可能是Iterator或ByteBuffer private[spark] case class PutResult(size: Long, data: Either... 阅读全文

posted @ 2014-01-09 17:48 fxjwind 阅读(168) | 评论 (0) 编辑

Spark源码分析 – Executor
摘要: ExecutorBackend 很简单的接口 package org.apache.spark.executor/** * A pluggable interface used by the Executor to send updates to the cluster scheduler. */private[spark] trait ExecutorBackend { def s... 阅读全文

posted @ 2014-01-07 16:52 fxjwind 阅读(194) | 评论 (0) 编辑

Spark源码分析 -- SchedulableBuilder
摘要: SchedulableBuilder就是对Scheduleable tree的封装, 在Pool层面(中间节点), 完成对TaskSet的调度(FIFO, FAIR) 在TaskSetManager 层面(叶子节点), 完成对TaskSet中task的调度(locality)以及track(retry) TaskSetManager 用于封装TaskSet, 主要提供对单个Ta... 阅读全文

posted @ 2014-01-06 15:30 fxjwind 阅读(195) | 评论 (0) 编辑

Spark源码分析 -- TaskScheduler
摘要: Spark在设计上将DAGScheduler和TaskScheduler完全解耦合, 所以在资源管理和task调度上可以有更多的方案 现在支持, LocalSheduler, ClusterScheduler, MesosScheduler, YarnClusterScheduler 先分析ClusterScheduler, 即standalone的Spark集群上, 因为比较单纯不涉及其他的... 阅读全文

posted @ 2014-01-03 18:25 fxjwind 阅读(236) | 评论 (0) 编辑

Spark源码分析 – SchedulerBackend
摘要: SchedulerBackend, 两个任务, 申请资源和task执行和管理 对于SparkDeploySchedulerBackend, 基于actor模式, 主要就是启动和管理两个actor Deploy.Client Actor, 负责资源申请, 在SparkDeploySchedulerBackend初始化的时候就会被创建, 然后Client会去到Master上注册, 最终完成在W... 阅读全文

posted @ 2014-01-03 17:25 fxjwind 阅读(236) | 评论 (0) 编辑

Spark源码分析 – Deploy
摘要: 参考, Spark源码分析之-deploy模块 Client Client在SparkDeploySchedulerBackend被start的时候, 被创建, 代表一个application和spark cluster进行通信 Client的逻辑很简单, 封装ClientActor, 并负责该Actor的start和stop 而ClientActor的关键在于preSta... 阅读全文

posted @ 2014-01-02 17:50 fxjwind 阅读(276) | 评论 (0) 编辑

Spark源码分析 – DAGScheduler
摘要: DAGScheduler的架构其实非常简单, 1. eventQueue, 所有需要DAGScheduler处理的事情都需要往eventQueue中发送event 2. eventLoop Thread, 会不断的从eventQueue中获取event并处理 3. 实现TaskSchedulerListener, 并注册到TaskScheduler中, 这样TaskScheduler可以随时... 阅读全文

posted @ 2013-12-30 15:32 fxjwind 阅读(300) | 评论 (0) 编辑

Spark 源码分析 -- Task
摘要: Task是介于DAGScheduler和TaskScheduler中间的接口 在DAGScheduler, 需要把DAG中的每个stage的每个partitions封装成task 最终把taskset提交给TaskScheduler /** * A task to execute on a worker node. */private[spark] abstract c... 阅读全文

posted @ 2013-12-30 15:30 fxjwind 阅读(311) | 评论 (0) 编辑

Spark 源码分析 -- Stage
摘要: 理解stage, 关键就是理解Narrow Dependency和Wide Dependency, 可能还是觉得比较难理解 关键在于是否需要shuffle, 不需要shuffle是可以随意并发的, 所以stage的边界就是需要shuffle的地方, 如下图很清楚 并且Stage分为两种, shuffle map stage, in which case its tasks' r... 阅读全文

posted @ 2013-12-26 16:37 fxjwind 阅读(335) | 评论 (0) 编辑

Spark源码分析 – SparkContext
摘要: Spark源码分析之-scheduler模块 这位写的非常好, 让我对Spark的源码分析, 变的轻松了许多 这里自己再梳理一遍 先看一个简单的spark操作, val sc = new SparkContext(……)val textFile = sc.textFile("README.md")textFile.filter(line => line.contains(... 阅读全文

posted @ 2013-12-24 18:03 fxjwind 阅读(1342) | 评论 (2) 编辑

Spark源码分析 -- PairRDD
摘要: 和一般RDD最大的不同就是有两个泛型参数, [K, V]表示pair的概念 关键的function是, combineByKey, 所有pair相关操作的抽象 combine是这样的操作, Turns an RDD[(K, V)] into a result of type RDD[(K, C)] 其中C有可能只是简单类型, 但经常是seq, 比如(Int, Int) to (Int, Seq[I... 阅读全文

posted @ 2013-12-24 15:21 fxjwind 阅读(487) | 评论 (1) 编辑

Spark源码分析 – Dependency
摘要: Dependency 依赖, 用于表示RDD之间的因果关系, 一个dependency表示一个parent rdd, 所以在RDD中使用Seq[Dependency[_]]来表示所有的依赖关系 Dependency的base class 可见Dependency唯一的成员就是rdd, 即所依赖的rdd, 或parent rdd /** * Base class for... 阅读全文

posted @ 2013-12-24 15:20 fxjwind 阅读(331) | 评论 (0) 编辑

Spark 源码分析 -- RDD
摘要: 关于RDD, 详细可以参考Spark的论文, 下面看下源码 A Resilient Distributed Dataset (RDD), the basic abstraction in Spark. Represents an immutable, partitioned collection of elements that can be operated on in paral... 阅读全文

posted @ 2013-12-24 15:19 fxjwind 阅读(630) | 评论 (0) 编辑

Spark OverView
摘要: http://spark.incubator.apache.org/ http://spark.incubator.apache.org/documentation.html http://ampcamp.berkeley.edu/3/exercises/data-exploration-using-spark.html, 非常好的hand-on exercises 源码分析 http:/... 阅读全文

posted @ 2013-11-14 11:21 fxjwind 阅读(423) | 评论 (0) 编辑

Discretized Streams, 离散化的流数据处理
摘要: Discretized Streams: An Efficient and Fault-Tolerant Model for Stream Processing on Large Clusters 当前的流处理方案, Yahoo!’s S4, Twitter’s Storm, 都是采用传统的"record at-a-time”处理模式, 当收到一条record, 或者更新状态, 或者产生新... 阅读全文

posted @ 2013-09-22 15:42 fxjwind 阅读(192) | 评论 (0) 编辑

Spark - A Fault-Tolerant Abstraction for In-Memory Cluster Computing
摘要: http://spark-project.org/ 项目首页 http://shark.cs.berkeley.edu/ shark项目主页 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing 为什么需要Spark? 当前已经有比较多的compu... 阅读全文

posted @ 2013-03-30 14:46 fxjwind 阅读(440) | 评论 (0) 编辑

Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center
摘要: http://incubator.apache.org/mesos/research.html, Mesos Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center 为什么需要Mesos? 现在有越来越多的compute framework, 并且每个framework都有自己的适用场景和优缺点... 阅读全文

posted @ 2013-03-27 16:55 fxjwind 阅读(141) | 评论 (0) 编辑


转自:http://www.cnblogs.com/fxjwind/category/518904.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值