使用Maven编译Spark源码

本文主要介绍Linux系统下使用Maven编译Spark源码,以及可能会遇到的问题及解决。由于windows下编译的方法类似,只做粗略介绍,详细参考Linux的编译方法。spark源码为1.6.0版本。为什么用Maven不用sbt?因为一年前曾经尝试用过sbt,但是没成功,后来有别的事就把编译源码放下了,最近打算学习学习,由于之前失败的经历,这次使用的是Maven,虽然遇到不少问题,最后还是成功了。

Linux下编译Spark源码

准备:Maven和Spark源码包

1. Maven安装

1.1 首先下载Maven并解压,安装目录视情况而定,我放在了/usr/local目录下

$ wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
$ tar vxf apache-maven-3.3.9-bin.tar.gz
$ mv apache-maven-3.3.9 /usr/local/maven3

1.2 配置Linux环境变量
$ vim /etc/profile

加入下面两行
export MAVEN_HOME=/usr/local/maven3
export PATH=${PATH}:${MAVEN_HOME}/bin

执行 source /etc/profile,使环境变量生效。

执行 mvn -v验证maven是否安装成功,如果安装成功会打印相关内容

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven3
Java version: 1.7.0_75, vendor: Oracle Corporation
Java home: /usr/etc/jdk1.7.0_75/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-573.18.1.el6.x86_64", arch: "amd64", family: "unix"
1.3 修改Maven配置

为了编译源码速度更快 ,或者被墙的原因下载不到依赖,可以更改Maven仓库为国内地址。进入/usr/local/maven3文件夹,在conf目录中找到settings.xml 文件,配置mirrors的子节点,添加如下mirror

阿里云Maven镜像:

<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>

2. Spark源码下载及编译

2.1 Github上搜Spark,下载对应版本,我这里下的是1.6.0,连接:<a href=https://github.com/apache/spark>apache/spark</a>

2.2 修改make-distribution.sh 文件

位置在下载的文件夹里

修改MVN="$MAVEN_HOME/bin/mvn"

2.3 修改spark源码的pom.xml文件,将Maven仓库改成阿里云仓库

<name>Maven Repository</name>
<!--<url>https://repo1.maven.org/maven2</url>-->
  <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
  <releases>
  <enabled>true</enabled>
  </releases>

2.4 编译源码

cd 到spark的目录下

$ set MAVEN_OPTS=-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m

$ mvn -DskipTests clean package


漫长等待,短则20min,长则1~2小时

编译成功

2.5 导入idea

File-->New-->Project From Existing Source-->选择你自己的Spark目录-->Import project from external model-->Maven ,然后一路Next,耐心等待一切完成。

找到examples下的sparkpi,运行。不出问题 完美;不成功看下一节

3.报错解决

经验分享 程序员 微信小程序 职场和发展