Spark源码编译
为什么需要编译?
因为不同版本的HDFS在协议上是不兼容的,所以如果你想用你的Spark从HDFS上读取数据,那么你就的选择相应版本的HDFS来编译Spark,这个可以在编译的时候通过设置hadoop.version来选择,默认情况下,Spark默认为编译成Hadoop 1.0.4版本。现在可以使用的方法有Maven编译,sbt编译(时间较长),Spark自带脚本编译(实际还是调用Maven)。
当然也可以去官网直接下载编译好的Spark,不过需要官方提供版本支持,我的hadoop版本为2.2,所以必须要自己编译。
采用spark自带脚本编译
因为该脚本其实是调用了Maven进行编译的,所以必须先安装Maven。
1. 安装Maven
从官网下载Maven包,解压到/usr/local/maven:
tar -zxf apache-maven-3.2.3-bin.tar.gz
sudo mv apache-maven-3.2.3 /usr/local/maven
配置安装目录:
sudo gedit /etc/profile
在末尾加上:
MAVEN_HOME=/usr/local/mvn
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
验证:
mvn –v
2. 编译spark
在下载下来的Spark源码中的同一级目录下有个make-distribution.sh脚本,这个脚本可以打包Spark的发行包,可以通过下面的命令运行(编译成hadoop2.2版本,并打包):
./make-distribution.sh --tgz -Phadoop-2.2 -Pyarn -DskipTests -Dhadoop.version=2.2.0
编译完成:
可以在spark目录下找到该包: