编译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,可以直接下载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源码
编译可以使用maven,sbt以及自带脚本编译 ./dev/make-distribution.sh,mvn命令仅编译spark源码,如果需要生成可发行版本,则需要使用脚本进行编译。
编译前配置
-
解压spark源码,在spark目录下进行操作。
-
将scala-2.11.8文件夹和zinc-0.3.11文件夹拷贝至build目录下,不拷贝的话,在编译过程中会自动下载,但是因为防火墙的原因,一般情况下都会失败,除非翻墙并使用全局代理。
-
将scala-2.11.8文件夹和zinc-0.3.11文件夹拷贝至build目录下,不拷贝的话,在编译过程中会自动下载,但是因为防火墙的原因,一般情况下都会失败,除非翻墙并使用全局代理。
-
使用scala版本为2.10和2.11时,需要执行dev目录下的脚本,修改一下版本支持。
修改完成,开始进行编译,编译分三种方式。
使用mvn进行编译
build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.5 -DskipTests clean package
命令中指定了对应编译后spark性能支持的选项。
第一次编译是会下载大量的maven编译依赖包,花费时间相对较长。
使用./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
最终构建成可发行的压缩包
使用mvn编译单个子项目graphx
./build/mvn -pl :spark-graphx_2.11 clean install
生成的graphx的包为spark-graphx_2.11-2.2.0.jar
至此,编译spark源码和编译spark单个子项目完成
另外:
编译 spark-master:
需要scala版本为2.11.12
需要zinc版本为0.3.15
可编译成功!