本文主要讲述了Spark2.4源码的编译…
Spark2.4源码编译
源码下载
从github上下载最新版本spark源码
https://github.com/apache/spark
Apache Maven(Maven编译)
基于maven的编译的版本要求如下:
Maven版本:3.5.4+
Java版本:java8+
设置maven使用内存
1 | export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m" |
如果没有设置上述参数,可能会报错:
1 | [INFO] Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.11/classes... |
build/mvn
Spark提供了自动化maven编译脚本,会自动下载安装编译所需要的Maven,Scala,Zinc。
编译命令
1 | ./build/mvn -DskipTests clean package |
mac环境下,如果你曾从bash风格切换到zsh风格之后,没有在.zshrc中配置JAVA_HOME环境变量,可能会报错:
1 | Cannot run program "/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/bin/javac": error=2, No such file or directory |
在 ~/.zshrc 配置文件中配置JAVA_HOME即可。
building…
1 | stefan@localhost ~/Documents/workspace/code/spark master ./build/mvn -DskipTests clean package |
Building a Runnable Distribution(编译可运行的分布式版本)
Spark提供了自动化的分布式编译脚本:./dev/make-distribution.sh
脚本各参数含义可以通过help命令查看:
1 | ./dev/make-distribution.sh --help |
Tips: 一定要习惯使用help 。
1 | ✘ stefan@localhost ~/Documents/workspace/code/spark master ./dev/make-distribution.sh --help |
编译命令
1 | ./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes |
上述命令会编译spark分发包,Python pip 和R包。执行前,请确认本地安装了R。
Specifying the Hadoop Version and Enabling YARN(指定Hadoop版本并启用YARN)
可以通过hadoop.version参数指定Hadoop编译版本,如果不指定,Spark将默认使用Hadoop2.6.X版本编译。
编译命令
1 | Apache Hadoop 2.6.X |
building…
1 | ✘ stefan@localhost ~/Documents/workspace/code/spark master ./build/mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.7 -DskipTests clean package |
Building With Hive and JDBC Support(支持Hive和JDBC编译)
集成Spark SQL,Hive和JDBC,如果不指定,将默认绑定Hive 1.2.1编译。
编译命令
1 | With Hive 1.2.1 support |
building…
1 | stefan@localhost ~/Documents/workspace/code/spark master ./build/mvn -Pyarn -Phive -Phive-thriftserver -DskipTests clean package |
Packaging without Hadoop Dependencies for YARN(不包含hadoop依赖的yarn打包)
采用hadoop-provided profile编译时,会排除hadoop依赖进行编译打包。
编译命令
1 | ./build/mvn -Dhadoop-provided -DskipTests clean package |
building
1 | stefan@localhost ~/Documents/workspace/code/spark master ./build/mvn -Dhadoop-provided -DskipTests clean package |
至此,我们演示了几种常用的编译方式。
测试成功
开启spark-shell
1 | ✘ didi@localhost ~/Documents/workspace/code/spark master ./bin/spark-shell |
成功打开spark-shell交互界面,说明编译成功。
后面我们将介绍如何在本地进行Spark本地源码的开发测试。
参考文献:http://spark.apache.org/docs/latest/building-spark.html
本文链接: https://stefanxiepj.github.io/archives/19fcea0d.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)