![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 81
colossus_bigdata
大数据&微服务架构师
展开
-
spark源码学习(二)---Master源码分析(3)-master对driver、executor的调度
本文根据spark1.6源码。自己学习总结,错误之处请指正。schedule方法是资源调度的一个重要方法,当一个APp加入内存或者集群可用的资源发生变化的时候,就会调用该方法。该调度方法主要针对driver,worker,application的调度。首先获取所有可用的alive的worker,并将这个worker集合随机打乱,然后遍历获取等待调度的driver,如果worker的资源可以运行原创 2016-02-10 19:39:41 · 734 阅读 · 0 评论 -
spark源码学习(七)--- TaskScheduler源码分析
上一篇文章中,当程序执行到submitMissingTask的时候,会调用taskScheduler.submitTasks(new TaskSet(tasks.toArray, stage.id, stage.latestInfo.attemptId, jobId, properties))这个方法,其中的tasks是一个seq集合,每个partition会创建一个Task(ShuffleMap原创 2016-02-20 23:18:57 · 550 阅读 · 0 评论 -
spark源码学习(六)--- DAGScheduler中的task的划分
前面的文章中,当执行到submitstage的方法中,会调用到submitMissingTasks(stage, jobId.get) 这个方法。 private def submitMissingTasks(stage: Stage, jobId: Int) { logDebug("submitMissingTasks(" + stage + ")") // Get ou原创 2016-02-20 18:25:45 · 665 阅读 · 0 评论 -
spark源码学习(五)--- DAGScheduler中的stage的划分
上一篇文章中,当sparkContext初始化完成,并且worker也反向注册回来之后,程序代码开始运行,当遇到一个action操作的时候,该action函数会调用runjob函数,runjob最周会调用到DAGScheduler。本文将分析下面的DAGScheduler将一个job划分成若干个stage,每个stage又会分成若干个task,对与每个partition都会启动一个task,每个t原创 2016-02-20 15:56:19 · 1555 阅读 · 0 评论 -
spark源码学习(十二)--- checkpoint机制分析
checkpoint原理:上篇cacheManager源码分析文章中提到,当RDD使用cache机制从内存中读取数据,如果数据没有读到,会使用checkpoint机制读取数据。此时如果没有checkpoint机制,那么就需要找到父RDD重新计算数据了,因此checkpoint是个很重要的容错机制。checkpoint就是对于一个RDD chain,如果中间某些中间结果RDD,后面需要反复使原创 2016-03-03 21:33:00 · 1418 阅读 · 0 评论 -
spark源码学习(二)---Master源码分析(2)-master内组件状态改变机制
本篇学习master里面几个组件状态改变时发生的事情,自己写自己看,不对之处请拍砖。首先,来看driver的状态改变: case DriverStateChanged(driverId, state, exception) => { state match { //如果driver的状态是ERROR,Finished,killed,或者Failed原创 2016-02-09 13:24:03 · 751 阅读 · 0 评论 -
spark源码学习(十一)---cacheManager分析
cacheManager的分析要从RDD说起,当读取数据的时候,调用RDD的iterator方法的时候,如果storeRageLevel不是none,那么说明之前进行过RDD的持久化,就不需要从从父RDD执行以获取数据,优先使用cacheManager获取持久化的数据。 final def iterator(split: Partition, context: TaskContext): I原创 2016-03-03 20:08:56 · 879 阅读 · 0 评论 -
spark源码学习(十)--- blockManager分析
blockManager主要原理:blockmanager位于org.apache.spark.storage中,包含四个重要的组件:DiskStore,MemoryStore,Blocktransferservice,ConnectionManager。其中,diskStore负责对磁盘上的数据读写;memoryStore负责内存数据的读写,connectionManager负责到远程节点的原创 2016-03-03 11:56:41 · 4952 阅读 · 0 评论 -
spark源码学习(九)--- shuffle过程源码分析
shuffle过程是spark运算的重要过程,也是spark调优的关键地方之一,在spark中的reduceByKey,groupByKey,sortByKey,countByKey,join,cogroup等操作时,都会触发shuffle过程。shuffle过程发生在shuffleMapTask与resultTask之间,当shuffleMapTask的输出数据先放到内存bucket中,buck原创 2016-03-02 21:20:01 · 914 阅读 · 0 评论 -
spark源码学习(八)--- executor启动task分析
本文基于spark1.6。上一篇文章提到TaskScheduler将task与executor分配好以后,交给executor来运行task,本文分析executor运行task。首先,在收到消息后,executor向driver注册,这部分的注册是由CoarseGrainedExecutorBackend而不是executor类来完成的。首先来看该类的初始化: override def原创 2016-02-21 13:05:49 · 1950 阅读 · 0 评论