写点什么

Spark 源码阅读 01:环境搭建

发布于: 4 小时前
Spark 源码阅读 01:环境搭建

源码阅读环境搭建

我这周都在抽时间尝试把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 classescommand + b : go to implementationcommand + [ : go back to the previous locationshift + command + F : search files 
复制代码


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


SparkSubmit.scala Master.scalaWorker.scalaStandaloneAppClient.scala
复制代码

Reference

  • 大码王: https://www.cnblogs.com/huanghanyu/category/1774530.html

  • littlemagic:https://so.csdn.net/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.csdn.net/luyanbin_lqq/article/details/105579233

  • 写的很详细,参考一下吧 https://linbojin.github.io/2016/01/09/Reading-Spark-Souce-Code-in-IntelliJ-IDEA/

发布于: 4 小时前阅读数: 8
用户头像

还未添加个人签名 2018.07.24 加入

日拱一卒,长期主义,感受编程之美。 欢迎关注公众号 :「程序员赤小豆」

评论

发布
暂无评论
Spark 源码阅读 01:环境搭建