为了深入理解spark,想了解一下源码,故搭建了一下源码阅读环境。我是在windows环境下进行的。
step1:工具的获取
我安装的软件及版本如下,搭建之前请安装好这些:
(1)java1.8
(2)scala 安装可参考http://www.runoob.com/scala/scala-install.html
(3)maven 参考 https://www.yiibai.com/maven/maven_environment_setup.html#
(4)git
(5)intellij idea
我安装的版本如下图所示:
step2:下载spark源码,http://spark.apache.org/downloads.html 选择source code,我选择的是spark2.3
step3:在编译之前,首先需要对Maven的相关参数进行配置,以确保编译过程中不会出错,在Maven安装目录下找到bin/mvn.cmd文件,打开在文件中添加
MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
step4:切换目录到Spark源码根目录下面,开始编译Spark源码:
mvn -DskipTests clean package
过了一会,出错了,错误信息为java.io.IOException:cannt run program “bash”
查完资料,发现Spark编译需要在bash环境下,直接在windows环境下编译会报不支持bash错误,所以就利用git的bash窗口进行编译。
step5:打开Git Bash,切换到spark源码根目录下,重新编译,过了一个小时左右(可能是实验室网太卡了),编译完成,如图所示:
step6:
安装好IDEA之后,还需要下面这些步骤。
(1)安装scala插件
File-->Settings-->Plugins-->Install JetBrains plugin
搜索scala,选择Download and Install.安装完成之后,重启IDEA。
(2)配置sbt
File-->Settings-->Build,Execution,Deployment-->Build Tools-->SBT
JVM-->Custom 选择你自己的Java 安装目录
Launcher(sbt-launch.jar)-->Custom 选择你自己的sbt-launch.jar
(3)配置Maven
File-->Settings-->Build,Execution,Deployment-->Build Tools-->Maven
修改Maven home directory, 设置成你的安装目录
修改User settings file,设置成你的安装目录下面conf中settings.xml
File-->Settings-->Build,Execution,Deployment-->Build Tools-->Maven-->Runner
VM Options 加入如下参数-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m
JRE 设置成自己想要的Java版本
(4)配置scala
File-->Settings-->Build,Execution,Deployment-->Compile-->Scala Compile-->Scala Compile Server
选中 Use external compile server for scala
JVM SDK 设置成自己需要的。
step7:在idea中导入项目
步骤:File -> Open -> {spark dir}/pom.xml -> Open as Project //spark dir为你安装的spark路径
step8:运行实例进行测试,我选择的是sparkpi实例
(1)配置运行参数 Menu -> Run -> Edit Configurations -> 选择 + -> Application
VM options: -Dspark.master=local 代表使用本地模式运行Spark代码,也可以选择其他模式。
(2)运行后报错 Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Seq
解决方法:
Menu -> File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依赖 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/
(3)重新运行 成功
总结:还算顺利完成了源码阅读环境搭建,参考了以下
https://github.com/linbojin/spark-notes/blob/master/media/01-debug.jpg
https://blog.csdn.net/ggz631047367/article/details/53811213
https://blog.csdn.net/peter1220/article/details/52490886
https://blog.csdn.net/do_yourself_go_on/article/details/73129408
有问题可留言,大家一起讨论。