Spark源码分析调试环境搭建

目前经常使用的Spark版本有三种Cloudera、HDP和Apache,源码的获取方式能够在各自官网下载。本文选择Apache版本。git

搭建环境所须要的工具以下:github

  • CentOS 7
  • maven 3.5.0
  • Java 1.8.0
  • Scala 2.12.2
  • IntelliJ IDEA2017.1.2

本人选择在服务器上进行编译和调试,机器配置为至强CPU(56核)、内存256G。shell

下载源码

首先将apache/spark fork到本身的github仓库,接着再IDEA上经过VCS->Checkout from Version Control->Github 中选择刚刚fork下来到本地apache

配置本地maven

本文选择使用本身搭建的maven仓库,Spark源码自带的maven会从官方镜像上下载所需的依赖,此步骤会比较耗时,设置为本地maven仓库后,速度会大幅提高。设置方法以下图所示编程

preview

编译Spark源码

选择的最新版的Spark,目前是2.3.0。编译Spark源码,使用本身安装的maven进行编译,其中-T参数是设置编译的线程数,这里设置的是20服务器

mvn -T 5 -DskipTests clean package

通过12分钟的等待,Spark源码编译完成,以下图所示maven

preview

接着能够经过运行下spark-shell来测试一下编译结果工具

./bin/spark-shell

preview

运行Spark源码自带的实例程序

因为大多数程序都是从hello world开始的,对应的,Spark的第一个程序为wordcount,咱们选择调试JavaWordCount。测试

打开JavaWordCount程序spa

在代码编辑区右键选择

Create 'JavaWordCount.main()'...

设置以下图所示

preview

其中

VM options: -Dspark.master=local
Program arguments:/home/spark-sourcecode/examples/src/main/resources/people.txt

保存运行配置,这样直接运行会出现如下两个错误,缺失flume sink

  • 缺失flume sink

preview

解决方法是在

View->Tool Windows->Maven Projects

在Spark Project External Flume Sink上右键选择Generate Sources and Update Folders

  • 缺乏Spark环境Jars包

preview

解决方案以下:

File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依赖 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/

preview

接着成功运行JavaWordCount

调试例子程序

preview

接下来就能够看到Spark程序运行时每一个变量的值变化,方便咱们对Spark源码的设计进行分析。

不过当咱们修改了Spark源码后,咱们得使用前面的编译命令对其进行从新编程生成。

相关文章
相关标签/搜索