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

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

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

file

当然我们不可能从这么古老的版本看,假如你接触过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)

file

Spark核心设计篇

file

上图是一个最简单的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万人关注的大数据成神之路,确定真的不来了解一下吗?

欢迎您关注《大数据成神之路》

大数据技术与架构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王知无(import_bigdata)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值