本文主要是介绍Spark源码阅读的正确打开方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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的时候是基于什么样的考虑。
在这里给大家推荐几篇论文如下:
第一篇:这个不多说,直接给出一个链接,这篇文章不长,很快能看完。
- 弹性分布式数据集:一种为内存化集群计算设计的容错抽象
https://fasionchan.com/blog/2017/10/19/yi-wen-tan-xing-fen-bu-shi-shu-ju-ji-yi-zhong-wei-nei-cun-hua-ji-qun-ji-suan-she-ji-de-rong-cuo-mo-xing/
第二篇:
- 大型集群上的快速和通用数据处理架构
这篇论文长达170多页,当然我们没有必要看完,我在网上找到一个总结,我们在《弹性分布式数据集:一种为内存化集群计算设计的容错抽象》这篇论文基础上看起来也会轻松不少。链接如下:https://blog.csdn.net/weixin_44024821/article/details/89948115
环境准备
Spark的源码环境搭建网上有很多资源,主要是环境依赖比如JDK、Scala、Maven等,整个过程大概耗时要1-4个小时,主要是编译源码费时。大家可以在网上任意找一篇文章搭建起来环境就可以。直到你在编译时出现下图就大功告成了。(我个人强烈不建议使用sbt的方式编译,推荐Maven)
Spark核心设计篇
上图是一个最简单的Spark任务的执行图。
在核心设计篇,我们最重要的模块列表如下:
Spark的初始化
SparkContextSparkEnvSparkConfRpcEnvSparkStatusTrackerSecurityManagerSparkUIMetricsSystemTaskScheduler
Spark的存储体系
SerializerManagerBroadcastManagerShuffleManagerMemoryManagerNettyBlockTransferServiceBlockManagerMasterBlockManagerCacheManager
Spark的内存管理
MemoryManagerMemoryPoolExecutionMemoryPoolStorageMemoryPoolMemoryStoreUnifiedMemoryManager
Spark的运算体系
LiveListenerBusMapOutputTrackerDAGSchedulerTaskSchedulerExecutorAllocationManagerOutputCommitCoordinatorContextClearner
Spark的部署模式
LocalSparkClusterStandaloneMater/Executor/Worker的容错
Spark Streaming
StreamingContextReceiverDstream窗口操作
Spark SQL
CatalogTreeNode词法解析器ParserRuleExecutorAnalyzer与OptimizerHive SQL相关
其他
假如你对图计算Spark GraphX和机器学习Spark MLlib感兴趣,可以单独看看。
整个跟实时计算相关的包和类大部分都已经包含在上述目录中了。假如你在使用的过程中出现了问题,就需要针对其中的具体部门去看。
源码阅读是我们每一个开发者都需要经历的阶段,阅读源码的好处就不说了。你我都懂。
声明:本号所有文章除特殊注明,都为原创,公众号读者拥有优先阅读权,未经作者本人允许不得转载,否则追究侵权责任。
关注我的公众号,后台回复【JAVAPDF】获取200页面试题!5万人关注的大数据成神之路,不来了解一下吗?5万人关注的大数据成神之路,真的不来了解一下吗?5万人关注的大数据成神之路,确定真的不来了解一下吗?
欢迎您关注《大数据成神之路》
这篇关于Spark源码阅读的正确打开方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!