- 下载spark源码,这里版本用的是2.1.0,下载后解压即可
官方下载地址 - 安装并配置maven
2.1 设置MAVEN_HOME
export MAVEN_HOME=maven的安装目录
export PATH=$PATH:$MAVEN_HOME/bin
2.2 设置阿里云镜像地址,这样maven编译打包速度会快很多,在maven的conf文件夹下的setting.xml文件中添加
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
- 设置spark的make-distribution.sh,待会用这个脚本打包成可执行的程序。make-distribution.sh的路径在spark解压文件下的dev目录下
修改MVN路径,默认spark自带maven的,这里修改成自己的maven
MVN="$MAVEN_HOME/bin/mvn"
- 修改pom.xml,由于hadoop,hive的版本都是cdh的,这里需要配置一下pom中镜像仓库地址,否则编译的时候下载不了对应cdh的版本。打开spark解压文件下的pom.xml,直接搜索 /repositor 即可找到对应配置位置
<repositories>
<repository>
<id>central</id>
<!-- This should be at top, it makes maven try the central repo first and then others and hence faster dep resolution -->
<name>Maven Repository</name>
<url>https://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
首先修改默认的镜像仓库地址为阿里云地址
<!-- <url>https://repo1.maven.org/maven2</url> -->
<url>https://maven.aliyun.com/nexus/content/groups/public/</url>
然后添加一个镜像仓库地址,注意这里是http的,https的话,编译报如下错误
Remote host closed connection during handshake: SSL peer shut down incorrectly
<repository>
<id>clouders</id>
<name>clouders Repository</name>
<url>http://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
- 编译并生成tgz可执行文件,在spark目录下执行如下命令,首先这里设置你的scala版本
./dev/change-scala-version.sh 2.11
然后执行./dev/make-distribution.sh命令
./dev/make-distribution.sh \
--name 2.6.0-cdh5.7.0 \
--tgz \
-Pyarn -Phadoop-2.6 \
-Phive -Phive-thriftserver \
-Dhadoop.version=2.6.0-cdh5.7.0
命令解释:
--name 2.6.0-cdh5.7.0 指定编译出来的spark名字,最终名字如下
spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz
--tgz 压缩成tgz格式
-Pyarn 支持yarn平台
-Phadoop-2.6 \ -Dhadoop.version=2.6.0-cdh5.7.0 \ 支持hadoop并指定hadoop版本为2.6.0-cdh5.7.0
-Phive -Phive-thriftserver \ 支持hive
- 最后就等maven编译打包即可,第一次这个过程会很长,因为需要下载的依赖很多,等最后出现如下提示就打包编译完成,并且在spark当前目录下,会有一个spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz的文件出现
+ TARDIR_NAME=spark-2.1.0-bin-2.6.0-cdh5.7.0
+ TARDIR=/home/vagrant/source/spark-2.1.0/spark-2.1.0-bin-2.6.0-cdh5.7.0
+ rm -rf /home/vagrant/source/spark-2.1.0/spark-2.1.0-bin-2.6.0-cdh5.7.0
+ cp -r /home/vagrant/source/spark-2.1.0/dist /home/vagrant/source/spark-2.1.0/spark-2.1.0-bin-2.6.0-cdh5.7.0
+ tar czf spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz -C /home/vagrant/source/spark-2.1.0 spark-2.1.0-bin-2.6.0-cdh5.7.0
+ rm -rf /home/vagrant/source/spark-2.1.0/spark-2.1.0-bin-2.6.0-cdh5.7.0