目前经常使用的Spark版本有三种Cloudera、HDP和Apache,源码的获取方式能够在各自官网下载。本文选择Apache版本。git
搭建环境所须要的工具以下:github
本人选择在服务器上进行编译和调试,机器配置为至强CPU(56核)、内存256G。shell
首先将apache/spark fork到本身的github仓库,接着再IDEA上经过VCS->Checkout from Version Control->Github 中选择刚刚fork下来到本地apache
本文选择使用本身搭建的maven仓库,Spark源码自带的maven会从官方镜像上下载所需的依赖,此步骤会比较耗时,设置为本地maven仓库后,速度会大幅提高。设置方法以下图所示编程
选择的最新版的Spark,目前是2.3.0。编译Spark源码,使用本身安装的maven进行编译,其中-T参数是设置编译的线程数,这里设置的是20服务器
mvn -T 5 -DskipTests clean package
通过12分钟的等待,Spark源码编译完成,以下图所示maven
接着能够经过运行下spark-shell来测试一下编译结果工具
./bin/spark-shell
因为大多数程序都是从hello world开始的,对应的,Spark的第一个程序为wordcount,咱们选择调试JavaWordCount。测试
打开JavaWordCount程序spa
在代码编辑区右键选择
Create 'JavaWordCount.main()'...
设置以下图所示
其中
VM options: -Dspark.master=local
Program arguments:/home/spark-sourcecode/examples/src/main/resources/people.txt
保存运行配置,这样直接运行会出现如下两个错误,缺失flume sink
解决方法是在
View->Tool Windows->Maven Projects
在Spark Project External Flume Sink上右键选择Generate Sources and Update Folders
解决方案以下:
File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依赖 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/
接着成功运行JavaWordCount
接下来就能够看到Spark程序运行时每一个变量的值变化,方便咱们对Spark源码的设计进行分析。
不过当咱们修改了Spark源码后,咱们得使用前面的编译命令对其进行从新编程生成。