编译 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 源码没有想象中的那么简单,感谢解决问题的前辈们把自己的解决方案发布在互联网。
也希望有人能从我这里得到解决问题的思路。