群主王知无 大数据技术与架构 架构
Spark发展至今,应该说已经很是成熟了。是大数据计算领域不得不学习的框架。尤为是Spark在稳定性和社区发展的成熟度方面,吊打其余的大数据处理框架。框架
Spark至今只经历过1.x、2.x和3.x三个大版本的变化,在核心实现上,咱们在Github能看到的最先的实现是0.5版本,这个版本只有1万多行代码,就把Spark的核心功能实现了。机器学习
固然咱们不可能从这么古老的版本看,假如你接触过Spark,如今准备看源码,那么我建议从2.x版本中选取一个,最好是2.3或者2.4。可是通过如此多的迭代,Spark的代码量已经暴增了几倍。因此你须要抓住重点,本文就是想跟你们说说,咱们该怎么看,看哪些东西。分布式
首先假如你是第一次接触Spark,那么你须要对Spark的设计思想有所了解,知道Spark用了哪些抽象,Spark在提出RDD的时候是基于什么样的考虑。ide
在这里给你们推荐几篇论文以下:学习
第一篇: 大数据
这个很少说,直接给出一个连接,这篇文章不长,很快能看完。.net
第二篇:设计
连接以下:https://blog.csdn.net/weixin_44024821/article/details/89948115code
Spark的源码环境搭建网上有不少资源,主要是环境依赖好比JDK、Scala、Maven等,整个过程大概耗时要1-4个小时,主要是编译源码费时。你们能够在网上任意找一篇文章搭建起来环境就能够。 直到你在编译时出现下图就大功告成了。(我的不建议使用sbt的方式编译,推荐Maven)
上图是一个最简单的Spark任务的执行图。
在核心设计篇,咱们最重要的模块列表以下:
SparkContext SparkEnv SparkConf RpcEnv SparkStatusTracker SecurityManager SparkUI MetricsSystem TaskScheduler
SerializerManager BroadcastManager ShuffleManager MemoryManager NettyBlockTransferService BlockManagerMaster BlockManager CacheManager
MemoryManager MemoryPool ExecutionMemoryPool StorageMemoryPool MemoryStore UnifiedMemoryManager
LiveListenerBus MapOutputTracker DAGScheduler TaskScheduler ExecutorAllocationManager OutputCommitCoordinator ContextClearner
LocalSparkCluster Standalone Mater/Executor/Worker的容错 Spark Streaming StreamingContext Receiver Dstream 窗口操做
Catalog TreeNode 词法解析器Parser RuleExecutor Analyzer与Optimizer HiveSQL相关
假如你对图计算Spark GraphX和机器学习Spark MLlib感兴趣,能够单独看看。
整个跟实时计算相关的包和类大部分都已经包含在上述目录中了。假如你在使用的过程当中出现了问题,就须要针对其中的具体部门去看。
源码阅读是咱们每个开发者都须要经历的阶段,阅读源码的好处就不说了。你我都懂。