Spark源码阅读01:环境搭建

本文详细记录了作者在尝试编译Spark 3.0源码过程中遇到的问题、解决方案,包括升级版本、依赖库调整、仓库替换及代码导入工具的使用。适合想要深入理解Spark源码的开发者参考。

源码阅读环境搭建

我这周都在抽时间尝试把Spark源码编译成功。刚开始我选择的版本是 2.3+ 发现怎么都编译不成功。遇到的一个问题是 scala-maven-plugin compile failed, 查版本号,修改版本后尝试未果。选早一点的版本的想法是说,阅读源码可能会少一些,毕竟版本越高,代码越庞大和复杂。

但是早期的版本已经是过去式了,依赖的其他包库也会修改和引入新的特性,编译失败卡的时间太久了,不值得投入,遂直接拥抱 Spark 3.0

编译源码

去 github 上克隆一份代码,切换到你想看的 Spark 版本。

git clone 
git checkout branch-3.0

Spark 官方网站上就有非常详细的步骤告诉你怎么编译。https://spark.apache.org/docs/3.0.0/building-spark.html

具体的,我执行了如下几步。这几步的细节在这里就不展开了,可以Google安装这些版本的依赖。

  1. 安装 mvn 3.6.3
  2. 安装 Java 8
  3. 安装 Scala 2.12
  4. 确保自己的安装环境有 git
  5. 执行如下命令,让 mvn 可使用的内存增加
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=1g"

编译过程需要花不少时间,有个地方下载速度非常慢。主要是从maven仓库中下载依赖,

Downloading from gcs-maven-central-mirror

解决方法是修改Spark源码根目录下的 pom.xml文件,在文件中查找所有的 gcs-maven-central-mirror(不止一个地方),并把URL 改为阿里云的仓库地址。

  <repository>  
 <id>gcs-maven-central-mirror</id>  
 <name>GCS Maven Central mirror</name>    
 <url>https://maven.aliyun.com/repository/public/</url>  
 <releases> <enabled>true</enabled>  
 </releases> <snapshots> <enabled>false</enabled>  
 </snapshots> 
 </repository>

最后执行:

mvn -Pyarn -Phive -Phive-thriftserver -Dhadoop.version=2.8.5 -DskipTests clean package -e

经过漫长的等待,就可以编译完成啦!
在这里插入图片描述

如何食用代码

首先官方是推荐使用 Intellij IDEA 去阅读和开发源码的。导入 Intellij也非常的简单,通过 pom.xml 导入为项目即可。
​一些有用的快捷键:

command + o : search classes
command + b : go to implementation
command + [ : go back to the previous location
shift + command + F : search files 

到此,就可以愉快地阅读源码啦。如果你不知道从哪里开始读,推荐看看下面的一些文件。

SparkSubmit.scala 
Master.scala
Worker.scala
StandaloneAppClient.scala

Reference

  • 大码王: https://www.cnblogs.com/huanghanyu/category/1774530.html
  • littlemagic:https://so.youkuaiyun.com/so/search?q=spark%20core&t=blog&u=nazeniwaresakini&urw=
  • tobe:https://www.zhihu.com/people/tec-ck/posts?page=3
  • https://www.jianshu.com/p/3a9b26687d9c
  • https://blog.youkuaiyun.com/luyanbin_lqq/article/details/105579233
  • 写的很详细,参考一下吧 https://linbojin.github.io/2016/01/09/Reading-Spark-Souce-Code-in-IntelliJ-IDEA/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值