spark 源码分析
shark.zyq
work@alibaba
hangzhou
展开
-
spark core源码分析10 Task的运行
这一节介绍具体task的运行以及最终结果的处理看线程运行的run方法,见代码注释override def run(): Unit = { val taskMemoryManager = new TaskMemoryManager(env.executorMemoryManager) val deserializeStartTime = System.currentTim原创 2015-08-31 19:24:40 · 1245 阅读 · 0 评论 -
spark core源码分析17 RDD相关API
一、RDD创建的操作(SparkContext.scala)二、RDD基本转换操作(RDD.scala)三、K/V类型RDD转换操作四、RDD行动操作原创 2015-09-22 21:48:08 · 2447 阅读 · 0 评论 -
spark core源码分析16 Shuffle详解-读流程
不管是sortShuffleManager还是hashShuffleManager,getReader方法返回的都是HashShuffleReader。首先调用了fetch方法,介绍一下1、在task运行那节介绍过,shuffleMapTask运行完成后,会将shuffleId及mapstatus的映射注册到mapOutputTracker中2、fetch方法首先尝试在本地mapstatuses中查找是否有该shuffleId的信息,有则本地取;否则想master的mapOutputTracker请求原创 2015-09-15 20:17:21 · 1372 阅读 · 0 评论 -
spark core源码分析13 异常情况下的容错保证
standalone模式下的框架图如下:异常分析1: worker异常退出worker异常退出,比如说有意识的通过kill指令将worker杀死worker在退出之前,会将自己所管控的所有小弟executor全干掉worker需要定期向master改善心跳消息的,现在worker进程都已经玩完了,哪有心跳消息,所以Master会在超时处理中意识到有一原创 2015-09-08 19:11:47 · 1441 阅读 · 1 评论 -
spark core源码分析12 spark缓存清理
spark缓存清理机制默认情况下,RDD是不缓存的,即计算完之后,下一次用需要重新计算。如果要避免重新计算的开销,就要将RDD缓存起来,这个道理谁都明白。但是,缓存的RDD什么时候去释放呢?这就用到了上面提到的弱引用。当我们调用persist缓存一个RDD时,会调用registerRDDForCleanup(this),这就是将本身的RDD注册到一个弱引用中。当这个RDD变为不可达时,会自动将该RDD对象插入到referenceQueue中,等到下次GC时就会走doCleanupRDD分支。RDD可能保存原创 2015-09-02 18:53:40 · 3472 阅读 · 0 评论 -
spark core源码分析15 Shuffle详解-写流程
Shuffle是一个比较复杂的过程,有必要详细剖析一下内部写的逻辑ShuffleManager分为SortShuffleManager和HashShuffleManager一、SortShuffleManager每个ShuffleMapTask不会为每个Reducer生成一个单独的文件;相反,它会将所有的结果写到一个本地文件里,同时会生成一个index文件,Reducer可以通过这个index文件取得它需要处理的数据。避免产生大量的文件的直接收益就是节省了内存的使用和顺序Disk IO带来的低延时。原创 2015-09-12 08:43:10 · 2426 阅读 · 0 评论 -
spark core源码分析11 RDD缓存及checkpoint
RDD有cache和persist方法,用于将RDD进行缓存。cache方法其实就是persist(MEMORY_ONLY)我们看一下这个方法干了什么事情def persist(newLevel: StorageLevel): this.type = { // TODO: Handle changes of StorageLevel if (storageLevel !原创 2015-09-02 18:38:07 · 1288 阅读 · 0 评论 -
spark core源码分析3 Master HA
这一节讲解master 选举以及之后的处理流程上一节说到在Master启动过程中,首先调用了 Akka actor的preStart方法。原创 2015-08-24 19:08:43 · 1718 阅读 · 0 评论 -
spark core源码分析6 Spark job的提交
首先看一个spark自带的最简单的例子:object SparkPi { def main(args: Array[String]) { val conf = new SparkConf().setAppName("Spark Pi") val spark = new SparkContext(conf) val slices = if (args.length >原创 2015-08-26 19:47:09 · 1423 阅读 · 0 评论 -
spark core源码分析7 Executor的运行
实际任务的运行,都是通过Executor类来执行的。这一节,我们只介绍Standalone模式。源码位置:org.apache.spark.executor.CoarseGrainedExecutorBackendprivate def run( driverUrl: String, executorId: String, hostname: String,原创 2015-08-27 20:20:14 · 1357 阅读 · 0 评论 -
spark core源码分析8 从简单例子看transformation
前面提到过spark自带的一个最简单的例子,也介绍了SparkContext的部分,这节介绍剩余的内容中的transformation。object SparkPi { def main(args: Array[String]) { val conf = new SparkConf().setAppName("Spark Pi") val spark = new Spa原创 2015-08-27 20:20:55 · 1211 阅读 · 0 评论 -
spark core源码分析4 worker启动流程
源码位置:org.apache.spark.deploy.worker.Worker.scala首先查看worker的main方法,与master类似,创建sparkConf,参数解析,以及构造worker对象并创建ActorRef用于对外或者本身的信息交互。这里masters参数可以设置多个def main(argStrings: Array[String]) { Sig原创 2015-08-25 19:38:11 · 1144 阅读 · 0 评论 -
spark core源码分析9 从简单例子看action操作
上一节举例讲解了transformation操作,这一节以reduce为例讲解action操作首先看submitJob方法,它将我们reduce中写的处理函数随JobSubmitted消息传递出去,因为每个分区都需要调用它进行计算;而resultHandler是指最后合并的方法,在每个task完成后,需要调用resultHandler将最终结果合并。所以它不需要随JobSubmitted消原创 2015-08-29 15:51:53 · 1391 阅读 · 0 评论 -
spark core源码分析1 集群启动及任务提交过程
spark版本号:1.4.1spark源码分析目的是在解读源码的过程中记录一些重要的步骤,加深自己的印象,或许也可以给别人提供一些帮助。Standalone集群启动及任务提交过程详解正常启动及job提交过程如下:1. 启动master2. 启动worker3. 客户端提交application到master4. maste原创 2015-08-23 13:49:34 · 1672 阅读 · 1 评论 -
spark core源码分析5 spark提交框架
源码位置:org.apache.spark.deploy.SparkSubmit.SparkSubmit.scala这里解析参数,包括提交jar包的mainclass,Executor、Driver的相关配置等等等等。。def main(args: Array[String]): Unit = { val appArgs = new SparkSubmitArgumen原创 2015-08-25 19:38:44 · 1002 阅读 · 0 评论 -
spark core源码分析2 master启动流程
源码位置:org.apache.spark.deploy.master.Master.scalamain主方法:def main(argStrings: Array[String]) { SignalLogger.register(log) val conf = new SparkConf val args = new MasterArguments(arg原创 2015-08-23 17:52:27 · 1401 阅读 · 0 评论 -
spark core源码分析14 参数配置
spark可配参数详解原创 2015-09-08 19:56:05 · 2169 阅读 · 1 评论