
spark core
lxlneversettle
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spark源码学习(一):SparkContext初始化源码分析
SparkContext初始化源码分析在我们写一个Spark应用程序时,都会创建一个SparkContext对象,下面将分析在创建一个SparkContext对象的时候都做了哪些事情。因为这里有多种运行模式,这里只分析在standalone模式下运行的初始化流程Standalone模式首先看创建SchedulerBackend以及TaskScheduler的代码master指定是在loc...原创 2019-03-27 14:18:23 · 282 阅读 · 0 评论 -
Spark源码分析(六):DAGScheduler源码分析
DAGScheduler源码分析首先,在driver中我们初始化完成SparkContext之后,接下来我们就会创建一系列的rdd,并且会在某些rdd上调用action方法,下面我们以foreach()方法为例,看看转换是怎么执行的RDDdef foreach(f: T => Unit): Unit = withScope { val cleanF = sc.clean(f) ...原创 2019-04-03 14:41:07 · 427 阅读 · 2 评论 -
Spark源码分析(五):Worker工作原理
Worker工作原理在之前关于Master调度中我们知道,Master会向Worker发送启动Executor的消息接下来看一下worker收到启动executor的消息后会怎样处理// 启动executorcase LaunchExecutor(masterUrl, appId, execId, appDesc, cores_, memory_) => if (masterUr...原创 2019-03-28 17:29:57 · 305 阅读 · 0 评论 -
Spark源码分析(四):Master调度
Master调度在前面我们经常看到Master在接收到来自其他组件的消息之后会调用schedule()方法,那么schedule()方法是干什么的呢,下面就将介绍schedule()的作用 /** *每当一个新的app进入或者有可用资源时,会调用schedule * 每次调度,首先调度driver,然后调度application */ private def schedu...原创 2019-03-28 13:02:34 · 244 阅读 · 0 评论 -
Spark源码分析(十):SortShuffleWriter
SortShuffleWriterSortShuffleWriter可以进行map端join下面通过源码来看一下SortShuffleWriter是如何工作的源码分析首先我们需要看两个重要属性/* * 首先,这两个数据结构都是在数据溢写到文件前在内存中来存储数据的 * 如果我们需要进行Map端的合并,那么我们就使用PartitionedAppendOnlyMap,当我们向该数据结构进...原创 2019-04-06 19:04:45 · 372 阅读 · 1 评论 -
Spark源码分析(九):ByPassMergeSortShuffleWriter
ByPassMergeSortShuffleWriter使用条件:(1)不需要进行map端的聚合(2)partition数量小于spark.shuffle.sort.bypassMergeThreshold,默认是200下面首先看write()public void write(Iterator<Product2<K, V>> records) throws IO...原创 2019-04-06 19:04:17 · 459 阅读 · 0 评论 -
Spark源码分析(八):ShuffleWriter
ShuffleWriterShuffleWriter一共分成三种:ByPassMergeSortShuffleWriter,SortShuffleWriter和UnsafeShuffleWriter首先通过源码分析一下运行时如何选择ShuffleWriter看一下ShuffleMapTask的runTask()// 获取shuffleMnagerval manager = SparkEn...原创 2019-04-06 19:03:34 · 190 阅读 · 0 评论 -
Spark源码分析(三):Master主备切换
Master主备切换spark原生的standalone是支持主备切换的,下面从发生主备切换并且选出新的Leader Master开始Mastercase ElectedLeader => // 当当前Master收到自己被选为Leader的信息后,会从持久化引擎中读取缓存的app,driver,worker信息 val (storedApps, storedDrivers...原创 2019-03-27 16:37:03 · 270 阅读 · 0 评论 -
Spark源码分析(二):Master注册机制
Master注册机制Application注册前一篇已经分析了SparkContext的初始化流程,最后会向Master发送RegisterApplication类型的注册信息下面看一下Master接收到这些信息之后,会怎样响应首先Master类继承了ThreadSafeRpcEndpoint类下面看一下Master的receive()这里只看和应用注册相关的代码因为Spark可以允...原创 2019-03-27 15:18:45 · 218 阅读 · 0 评论 -
Spark源码分析(七):Task分析
Task这篇主要看一下在executor接收到LaunchTask消息之后,都做了什么Executordef launchTask(context: ExecutorBackend, taskDescription: TaskDescription): Unit = { // 对每个task创建一个TaskRunner线程 val tr = new TaskRunner(context,...原创 2019-04-03 15:15:47 · 258 阅读 · 0 评论