编译Spark源码与单个子项目GraphX

编译Spark源码与单个子项目GraphX

系统环境:ubuntu18.04 LTS 初装

Spark源码获取

实验选用spark-2.2.0版本,该版本目前有最新的中文文档,在Apache官网下载,下载地址为:https://spark.apache.org/downloads.html
官网文档http://spark.apachecn.org/docs/cn/2.2.0/building-spark.html
编译Spark源码与单个子项目GraphX
如果只需要使用spark,可以直接下载pre-built版本。

需要安装的支持环境

Java环境:实验证实不能使用OpenJDK,需要使用SunJDK,本实验中使用的是jdk1.8.0_181。

Scala环境:版本为scala-2.11.8,(需要*,socks开启全局代理模式)下载地址为:https://downloads.typesafe.com/scala/2.11.8/scala-2.11.8.tgz

Maven环境:版本为3.5.4,官网下载。

编译过程中需要的支持加速编译的包:zinc-0.3.11,(需要*,socks开启全局代理模式),下载地址为:https://downloads.typesafe.com/zinc/0.3.11/zinc-0.3.11.tgz

配置环境

在单用户 ~/.bashrc 文件中进行路径配置,在bash启动时export路径

相关引用统一放置在 /home/wj/apps/ 目录下,对Java,scala,maven安装包解压,并在文件 ~/.bashrc 中配置路径。

export M2_HOME=/home/wj/apps/apache-maven-3.5.4
export PATH=${M2_HOME}/bin:$PATH

export JAVA_HOME=/home/wj/apps/jdk1.8.0_181
export JRE_HOME=/home/wj/apps/jdk1.8.0_181/jre
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH

export SCALA_HOME=/home/wj/apps/scala-2.11.8
export PATH=${SCALA_HOME}/bin:$PATH

使路径修改生效:

source ~/.bashrc 

测试:
编译Spark源码与单个子项目GraphX
环境配置成功!

编译spark源码

编译可以使用mavensbt以及自带脚本编译 ./dev/make-distribution.sh,mvn命令仅编译spark源码,如果需要生成可发行版本,则需要使用脚本进行编译。

编译前配置

  1. 解压spark源码,在spark目录下进行操作。

  2. 将scala-2.11.8文件夹和zinc-0.3.11文件夹拷贝至build目录下,不拷贝的话,在编译过程中会自动下载,但是因为防火墙的原因,一般情况下都会失败,除非*并使用全局代理。

  3. 将scala-2.11.8文件夹和zinc-0.3.11文件夹拷贝至build目录下,不拷贝的话,在编译过程中会自动下载,但是因为防火墙的原因,一般情况下都会失败,除非*并使用全局代理。

    修改为:http://maven.aliyun.com/nexus/content/groups/public/
    编译Spark源码与单个子项目GraphX

  4. 使用scala版本为2.10和2.11时,需要执行dev目录下的脚本,修改一下版本支持。
    编译Spark源码与单个子项目GraphX
    修改完成,开始进行编译,编译分三种方式。

使用mvn进行编译

build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.5 -DskipTests clean package
命令中指定了对应编译后spark性能支持的选项。
第一次编译是会下载大量的maven编译依赖包,花费时间相对较长。
编译Spark源码与单个子项目GraphX

使用./dev/make-distribution.sh 构建一个可发行的版本

./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn

在没有安装R语言的情况下,去掉 --r 和 -Psparkr 选项,使用如下命令进行编译

./dev/make-distribution.sh --name custom-spark --pip --tgz -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn

参数行 -Psparkr 用于支持R语言运行在spark上的库
参数行 --r 和 --pip 分别用于支持R语言和Python语言

如果需要编译支持R语言的spark,需要安装R插件,参照如下文章:
https://blog.****.net/sddyljsx/article/details/81051078
编译成功,但是没有成功构建发行包,需要安装python以及相关的包setuptools
编译Spark源码与单个子项目GraphX
最终构建成可发行的压缩包
编译Spark源码与单个子项目GraphX

使用mvn编译单个子项目graphx

./build/mvn -pl :spark-graphx_2.11 clean install 

编译Spark源码与单个子项目GraphX
生成的graphx的包为spark-graphx_2.11-2.2.0.jar
编译Spark源码与单个子项目GraphX
至此,编译spark源码和编译spark单个子项目完成

另外:
编译 spark-master:
需要scala版本为2.11.12
需要zinc版本为0.3.15
可编译成功!