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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

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

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

https://mmbiz.qpic.cn/mmbiz_jpg/UdK9ByfMT2MSKPJAPEuwFF4c51BIibTSLV41740Vutq954fX6Fteiaan8ZlFGYcnT5N9Vs7qlJ6EgnBX4IgYprtw/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1![image](https://yqfile.alicdn.com/9839e23c948f298c8f2c125005dcd7de0c721c43.png)

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

基础概念篇

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

在这里给大家推荐几篇论文如下:

第一篇:

这个不多说,直接给出一个链接,这篇文章不长,很快能看完。

第二篇:

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

链接如下:https://blog.csdn.net/weixin_44024821/article/details/89948115

环境准备

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

https://mmbiz.qpic.cn/mmbiz_jpg/UdK9ByfMT2MSKPJAPEuwFF4c51BIibTSLvX4kgyJe4iboNydKuCN2kWpIIH6ibebzeiau8pfmibQUC3f3ebslwf3W5w/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1![image](https://yqfile.alicdn.com/035a32268dd2542c9f098e1d0b6ffed22bad0104.png)

Spark核心设计篇

https://mmbiz.qpic.cn/mmbiz_png/UdK9ByfMT2MSKPJAPEuwFF4c51BIibTSLshuQSPsOJW1rC7icLgKSPLq7ficCAgzxc8L9qhHKLS9Z6nqTfia9WtThQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1![image](https://yqfile.alicdn.com/7ca9cdfd807299e1a501cf5d10b9e91ab317f6f7.png)

上图是一个最简单的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感兴趣,可以单独看看。

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

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

关注我的公众号,后台回复【JAVAPDF】获取200页面试题!
5万人关注的大数据成神之路,不来了解一下吗?
5万人关注的大数据成神之路,真的不来了解一下吗?
5万人关注的大数据成神之路,确定真的不来了解一下吗?

欢迎您关注《大数据成神之路》
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
2月前
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
652 1
|
6月前
|
移动开发 JavaScript 前端开发
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件
|
6月前
|
Linux 开发者
17. 【Linux教程】查看文件内容
17. 【Linux教程】查看文件内容
57 0
|
分布式计算 资源调度 Hadoop
从一个简单的命令阅读hadoop源码(下)
从一个简单的命令阅读hadoop源码(下)
53 0
|
分布式计算 资源调度 Hadoop
从一个简单的命令阅读hadoop源码(上)
从一个简单的命令阅读hadoop源码
68 0
|
资源调度 分布式计算 Hadoop
从一个简单的命令阅读hadoop源码
从一个简单的命令阅读hadoop源码
153 0
从一个简单的命令阅读hadoop源码
MarkDown语法与Typora的使用—从此告别Word方式做笔记
MarkDown语法与Typora的使用—从此告别Word方式做笔记
|
前端开发 C++
一种用markdown写PPT的方法,再也不用费劲排版了
一种用markdown写PPT的方法,再也不用费劲排版了
一种用markdown写PPT的方法,再也不用费劲排版了
【Markdown语法】让我像习惯使用word一样,习惯使用CSDN编辑器(上)
简介:【Markdown语法】让我像习惯使用word一样,习惯使用CSDN编辑器
【Markdown语法】让我像习惯使用word一样,习惯使用CSDN编辑器(上)