maven编译spark2.3.2源码
软件版本
spark 2.3.2
scala 2.11.8
jdk 1.8+
maven 3.3.9
hadoop-2.6.0-cdh5.7.0
编译步骤:
1、先安装配置jdk,scala,maven(略)
2、到spark官网下载源码,我这里是用的spark-2.3.2版本。注意我们是下载源码,选择Source Code。然后点击spark-2.3.2.tgz下载。然后将包传到linux。或者右键点击spark-2.3.2.tgz,复制链接地址。然后再Linux上执行wget + 地址,可以直接将包下载到linux。如果linux没有安装wget,需安装服务。执行
yum install wget
进行安装。
3、下载好后,将包解压。我这里解压到hadoop用户家目录的app目录下。
tar -zxvf spark-2.3.2.tgz -C ~/app
4、解压好后,我们参照官网提供的文档来进行build spark。
5、我们是用maven来编译的,根据文档,这里有两种方式。
第一种是执行./build/mvn + 参数
第二种是执行./dev/make-distribution.sh + 参数
两种方式是差不多的,第二种其实也是封装使用mvn的命令,有兴趣的同学可以看下make-distribution.sh这个脚本的内容。这里我选择的是第二种方式,可以将源码编译后打包。
6、按照文档的内容,我这里直接贴出我编译的脚本。
sh 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
a、 - - name是指编译后的tar包名字后半部分,这里我贴出编译好的包。
这些参数的具体使用可以查看make-distribution.sh脚本。name的设置最好是你使用的hadoop版本号,这样可以一眼看出spark是基于什么hadoop版本编译的。
b、 - -tgz 编译好的包后缀名。
c、 -Dhadoop.version hadoop的具体版本号
d、-Phadoop-2.6 hadoop的大版本号
e、-Phive -Phive-thriftserver支持hive
f、-Pyarn支持yarn
需要支持什么组件可根据文档进行设置,我这里就选择了hive与yarn。
7、在执行编译之前,因为spark自带的pom.xml里面设置的镜像为apache的地址,而我这里使用的是CDH版本的hadoop,所以会报错找不到。我先将CDH的地址添加到pom里面。
<repository>
<id>cloudera</id>
<name>cloudera Repository</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
8、如果用的是scala 2.10版本,在执行编译语句之前,还需要执行
sh change-scala-version.sh 2.10
默认是使用2.11的。
9、maven的镜像库默认为.m2/repository。我这里修改为~/maven-repo。
找到maven目录conf下的settings.xml文件,修改如下
10、然后我们执行编译语句。这里我遇到报错
经过查阅资料,这里修改pom.xml里面的
<useZincServer>true</useZincServer>
属性,将值改为false。编译成功。
第一次编译会下载很多依赖包,会花很长的时间,耐心等待即可。