Spark源码阅读的正确打开方式

Spark源码阅读的正确打开方式

群主王知无 大数据技术与架构 架构

Spark发展至今,应该说已经很是成熟了。是大数据计算领域不得不学习的框架。尤为是Spark在稳定性和社区发展的成熟度方面,吊打其余的大数据处理框架。框架

Spark至今只经历过1.x、2.x和3.x三个大版本的变化,在核心实现上,咱们在Github能看到的最先的实现是0.5版本,这个版本只有1万多行代码,就把Spark的核心功能实现了。机器学习

Spark源码阅读的正确打开方式

固然咱们不可能从这么古老的版本看,假如你接触过Spark,如今准备看源码,那么我建议从2.x版本中选取一个,最好是2.3或者2.4。可是通过如此多的迭代,Spark的代码量已经暴增了几倍。因此你须要抓住重点,本文就是想跟你们说说,咱们该怎么看,看哪些东西。分布式

基础概念篇

首先假如你是第一次接触Spark,那么你须要对Spark的设计思想有所了解,知道Spark用了哪些抽象,Spark在提出RDD的时候是基于什么样的考虑。ide

在这里给你们推荐几篇论文以下:学习

第一篇: 大数据

这个很少说,直接给出一个连接,这篇文章不长,很快能看完。.net

第二篇:设计

  • 大型集群上的快速和通用数据处理架构
    这篇论文长达170多页,固然咱们没有必要看完,我在网上找到一个总结,咱们在《弹性分布式数据集:一种为内存化集群计算设计的容错抽象》这篇论文基础上看起来也会轻松很多。

连接以下:https://blog.csdn.net/weixin_44024821/article/details/89948115code

环境准备

Spark的源码环境搭建网上有不少资源,主要是环境依赖好比JDK、Scala、Maven等,整个过程大概耗时要1-4个小时,主要是编译源码费时。你们能够在网上任意找一篇文章搭建起来环境就能够。 直到你在编译时出现下图就大功告成了。(我的不建议使用sbt的方式编译,推荐Maven)

Spark源码阅读的正确打开方式

Spark核心设计篇

Spark源码阅读的正确打开方式

上图是一个最简单的Spark任务的执行图。

在核心设计篇,咱们最重要的模块列表以下:

Spark的初始化

SparkContext SparkEnv SparkConf RpcEnv SparkStatusTracker SecurityManager SparkUI MetricsSystem TaskScheduler

Spark的存储体系

SerializerManager BroadcastManager ShuffleManager MemoryManager NettyBlockTransferService BlockManagerMaster BlockManager CacheManager

Spark的内存管理

MemoryManager MemoryPool ExecutionMemoryPool StorageMemoryPool MemoryStore UnifiedMemoryManager

Spark的运算体系

LiveListenerBus MapOutputTracker DAGScheduler TaskScheduler ExecutorAllocationManager OutputCommitCoordinator ContextClearner

Spark的部署模式

LocalSparkCluster Standalone Mater/Executor/Worker的容错

Spark Streaming

StreamingContext Receiver Dstream 窗口操做

Spark SQL

Catalog TreeNode 词法解析器Parser RuleExecutor Analyzer与Optimizer HiveSQL相关

其余

假如你对图计算Spark GraphX和机器学习Spark MLlib感兴趣,能够单独看看。

整个跟实时计算相关的包和类大部分都已经包含在上述目录中了。假如你在使用的过程当中出现了问题,就须要针对其中的具体部门去看。

源码阅读是咱们每个开发者都须要经历的阶段,阅读源码的好处就不说了。你我都懂。