深入理解 Spark 2.1 Core 原理与源码分析
文章平均质量分 97
本专栏会深入讲解Spark 2.1 Core 的原理,并分析其源码,意在于总结并与大家交流学习。
小爷毛毛(卓寿杰)
NLP对话问答、大模型、AIGC。
微信视频号:毛毛讲书,欢迎关注进一步交流!
展开
-
深入理解Spark 2.1 Core (十二):TimSort 的原理与源码分析
http://blog.csdn.net/u011239443/article/details/57406300 在博文《深入理解Spark 2.1 Core (十):Shuffle Map 端的原理与源码分析 》中我们提到了: 使用Sort等对数据进行排序,其中用到了TimSort 这篇博文我们就来深入理解下TimSort可视化推荐先观看下 Youtube 上关于TimSort可视化原创 2017-02-26 19:49:52 · 3199 阅读 · 0 评论 -
深入理解Spark 2.1 Core (十一):Shuffle Reduce 端的原理与源码分析
http://blog.csdn.net/u011239443/article/details/56843264 在《深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析 》我们讲解了,以传统Hadoop MapReduce类似的从HDFS中读取数据,再到rdd.HadoopRDD.compute便可以调用函数f,即map中的函数的过程。在《深入理解Spark ...原创 2017-02-24 16:27:18 · 4097 阅读 · 2 评论 -
深入理解Spark 2.1 Core (十):Shuffle Map 端的原理与源码分析
http://blog.csdn.net/u011239443/article/details/55044862 在上一篇《深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析》提到经过迭代计算后,SortShuffleWriter.write中: // 根据排序方式,对数据进行排序并写入内存缓冲区。 // 若排序中计算结果超出的阈值, //原创 2017-02-13 21:41:03 · 2360 阅读 · 1 评论 -
深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析
在博文《深入理解Spark 2.1 Core (七):任务执行的原理与源码分析 》我们曾讲到过: Task有两个子类,一个是非最后的Stage的Task,ShuffleMapTask;一个是最后的Stage的Task,ResultTask。它们都覆盖了Task的runTask方法。我们来看一下ShuffleMapTask的runTask方法中的部分代码: var writer: Shuf原创 2017-02-11 20:30:54 · 6188 阅读 · 0 评论 -
深入理解Spark 2.1 Core (八):Standalone模式容错及HA的原理与源码分析
第五、第六、第七篇博文,我们讲解了Standalone模式集群是如何启动的,一个App起来了后,集群是如何分配资源,Worker启动Executor的,Task来是如何执行它,执行得到的结果如何处理,以及app退出后,分配了的资源如何回收。但在分布式系统中,由于机器众多,所有发生故障是在所难免的,若运行过程中Executor、Worker或者Master异常退出了,那该怎么办呢?这篇博文,我们就来讲原创 2017-01-09 14:27:24 · 2133 阅读 · 0 评论 -
深入理解Spark 2.1 Core (七):任务执行的原理与源码分析
上篇博文《深入理解Spark 2.1 Core (六):资源调度的实现与源码分析》中我们讲解了,AppClient如何启动,启动后如何为该app分配executor资源,以及分析了在Spark1.4之前资源调度算法的bug。接下来,我们就来讲逻辑上资源调度完后,该如何物理上启动Executor,以及Executor如何执行Task的。启动Executor 调用栈如下:Master.allocat原创 2017-01-06 23:08:07 · 3105 阅读 · 2 评论 -
深入理解Spark 2.1 Core (六):资源调度的原理与源码分析
在上篇博文中,我们讲到了如何启动Master和Worker,还讲到了如何回收资源。但是,我们没有将AppClient是如何启动的,其实它们的启动也涉及到了资源是如何调度的。这篇博文,我们就来讲一下AppClient的启动和逻辑与物理上的资源调度。原创 2017-01-05 23:25:43 · 5461 阅读 · 1 评论 -
深入理解Spark 2.1 Core (五):Standalone模式运行的原理与源码分析
概述前几篇博文都在介绍Spark的调度,这篇博文我们从更加宏观的调度看Spark,讲讲Spark的部署模式。Spark部署模式分以下几种:local 模式local-cluster 模式Standalone 模式YARN 模式Mesos 模式我们先来简单介绍下YARN模式,然后深入讲解Standalone模式。YARN 模式介绍YARN介绍YARN是一个资源管理、任务调度的框架,主要包含原创 2017-01-05 17:25:14 · 3184 阅读 · 0 评论 -
深入理解Spark 2.1 Core (四):运算结果处理和容错的原理与源码分析
在上一篇博文《深入理解Spark 2.1 Core (三):任务调度器的实现与源码分析 》TaskScheduler在发送任务给executor前的工作就全部完成了。这篇博文,我们来看看当executor计算完任务后,Spark是如何处理获取的计算结果与容错的。概述对于计算结果,会根据结果的大小有不同的策略:生成结果在(∞,1GB)(\infty,1GB):结果直接丢弃,可以通过spark.dr原创 2017-01-04 22:11:14 · 4025 阅读 · 1 评论 -
深入理解Spark 2.1 Core (三):任务调度器的原理与源码分析
上一篇博文《深入理解Spark 2.1 Core (二):DAG调度器的实现与源码分析 》讲到了DAGScheduler.submitMissingTasks中最终调用了taskScheduler.submitTasks来提交任务。这篇我们就从taskScheduler.submitTasks开始讲,深入理解TaskScheduler的运行过程。提交Task调用栈如下:TaskSchedulerI原创 2017-01-03 17:12:22 · 4218 阅读 · 0 评论 -
深入理解Spark 2.1 Core (二):DAG调度器的原理与源码分析
上一篇《深入理解Spark 2.0 (一):RDD实现及源码分析 》的5.2 Spark任务调度器我们省略过去了,这篇我们就来讲讲Spark的调度器。概述上一篇《深入理解Spark(一):RDD实现及源码分析 》提到: 定义RDD之后,程序员就可以在动作(注:即action操作)中使用RDD了。动作是向应用程序返回值,或向存储系统导出数据的那些操作,例如,count(返回RDD...原创 2016-12-28 22:11:02 · 11110 阅读 · 3 评论 -
深入理解Spark 2.1 Core (一):RDD的原理与源码分析
本文链接:http://blog.csdn.net/u011239443/article/details/53894611 该论文来自Berkeley实验室,英文标题为:Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing。下面的翻译,我是基于博文http://sh...原创 2016-12-27 12:57:57 · 22322 阅读 · 3 评论