编译 Spark-2.2.0 源码
参考 基于CentOS6.4环境编译Spark-2.1.0源码
需求分析
实际工作中,Spark 官网所提供的安装包不能满足我们的需求。
因为环境的不同出现问题
所以必须要结合实际环境用 Spark 源码进行编译后使用。
根据 Spark 官方文档编译模块的介绍如下:
1 | The Maven-based build is the build of reference for Apache Spark. Building Spark using Maven requires Maven 3.3.9 or newer and Java 8+. Note that support for Java 7 was removed as of Spark 2.2.0. |
得出编译 Spark-2.2.0 需要 Maven 3.3.9 和 Java 8+
前期准备
下载maven后进行环境变量的设置,设置maven的内存使用,在环境变量中加入如下命令
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
git:直接输入命令:
sudo yum install git下载 git
Spark-2.2.0 源码下载

解压
将下载好的 spark-2.2.0.tgz 通过 Xftp 传输到 /abs/software 目录
解压 spark-2.2.0.tgz
1 | # 将Spark源码包解压到/abs/app/中 |
解压后的目录机构如下所示:

配置
添加 CDH 的 maven repository 到 pom.xml
1 | <repository> |
修改位于 /abs/app/spark-2.2.0/dev 的 make-distribution.sh 文件
1 | # 注释以下内容: |
编译
我们可以使用 Spark 源码目录中的 dev 下的 make-distribution.sh 脚本,官方提供的编译命令如下:
1 | ./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn |
可以根据具体的条件来编译 Spark,比如我们使用的 Hadoop 版本是 2.6.0-cdh5.7.0,并且我们需要将 Spark 运行在 YARN 上、支持对 Hive 的操作,那么我们的 Spark 源码编译脚本就是:
1 | ./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz -Dhadoop.version=2.6.0-cdh5.7.0 -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn |
编译成功后的界面效果
1 | main: |
可以在 /abs/app/spark-2.2.0 目录中看到生成了 spark-2.2.0-bin-2.6.0-cdh5.7.0.tgz
将 spark-2.2.0-bin-2.6.0-cdh5.7.0.tgz 移动到 /abs/software/
1 | mv spark-2.2.0-bin-2.6.0-cdh5.7.0.tgz /abs/software/ |
小结
编译 Spark 源码没有想象中的那么简单,感谢解决问题的前辈们把自己的解决方案发布在互联网。
也希望有人能从我这里得到解决问题的思路。