编译环境
Cent OS 6.7
JDK1.8.0_101
Spark-1.6.3.tgz
写在前面:由于maven源在国外,笔者用国内镜像(阿里云)代替。
查看版本信息
下载Spark-1.6.3.tgz,解压后查看pom.xml,可以看到scala版本为2.10.5,zinc版本为0.3.5.3,Maven版本为3.3.3。
下载安装包
去官网下载scala-2.10.5.tgz、apache-maven-3.3.3.bin.tar.gz和zinc-0.3.5.3,然后传到spark-1.6.3/build目录下
安装Maven
前去官网下载Maven-3.3.3,然后解压到配置环境变量,最后修改配置文件中的镜像为阿里云。具体代码如下:
$sudo tar -zxvf apache-maven-3.3.3-bin.tar.gz -C /usr/local/
$cd /usr/local
$sudo mv ./apache-maven-3.3.3 ./maven3.3.3
$vim ~/.bashrc
开头添加如下内容
export MAVEN_HOME=/usr/local/maven3.3.3
export PATH=$PATH:$MAVEN_HOME/bin
$source ~/.bashrc
配置Maven
修改maven/conf/settings.xml配置文件,将其中mirror改为aliyun-maven。
$cd /usr/local/maven3.3.3/conf/
$vim ./settings.xml
settings.xml 文件里配置mirrors的子节点,添加如下mirror
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
配置pom.xml
配置spark-1.6.3/pom.xml文件,找到如下内容,替换之(-代表删除,+代表增加)
- <url>https://repo1.maven.org/maven2</url>
+ <!--<url>https://repo1.maven.org/maven2</url>-->
+ <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
build/mvn
编译spark源码,进入spark-1.6.3目录(后文有加快编译速度)
$cd XXXX/spark-1.6.3/
$./build/mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -DskipTests clean package
编译成功会出现:
出现错误或者不成功请Ctrl+c,重新编译。
提升编译速度
调整虚拟机配置为内存:4G
处理器:4个 2core/个
然后编译命令:./build/mvn -T 8 -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0 -DskipTests clean package
8个线程同时运行。当然你的电脑配置要高。笔者的配置为8G内存。
编译spark-2.1.0等其它内核版本也是如此。
导入IDEA,采用import project,maven方式。
设置本地运行和导入assembly/target/scala-2.11/jars
-Dspark.master=local
若想要将编译后的spark-1.6.3源码放入集群中使用只需要设置spark-env.sh文件即可;
安装后,需要在 ./conf/spark-env.sh 中修改 Spark 的 Classpath,执行如下命令拷贝一个配置文件:
cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
Shell 命令
编辑 ./conf/spark-env.sh(vim ./conf/spark-env.sh) ,在最后面加上如下一行:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
参考链接:给力星-SPARK