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

进行安装。
maven编译spark2.3.2源码_第1张图片
3、下载好后,将包解压。我这里解压到hadoop用户家目录的app目录下。

tar -zxvf spark-2.3.2.tgz -C ~/app

4、解压好后,我们参照官网提供的文档来进行build spark。
maven编译spark2.3.2源码_第2张图片
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包名字后半部分,这里我贴出编译好的包。
maven编译spark2.3.2源码_第3张图片
这些参数的具体使用可以查看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里面。


        cloudera
        cloudera Repository
        https://repository.cloudera.com/artifactory/cloudera-repos/
  

maven编译spark2.3.2源码_第4张图片
8、如果用的是scala 2.10版本,在执行编译语句之前,还需要执行

sh change-scala-version.sh 2.10

默认是使用2.11的。
9、maven的镜像库默认为.m2/repository。我这里修改为~/maven-repo。
找到maven目录conf下的settings.xml文件,修改如下
maven编译spark2.3.2源码_第5张图片

10、修改make-distribution.sh
在使用这个方式编译的时候,根据查看里面的代码,它会去确认scala,hadoop等的版本信息,这个动作会花费较长的时间。为了不长时间卡在这里,我们直接指定版本信息。先将上面的代码注释掉,然后在后面添加指定信息。其中VERSION为spark的版本。SPARK_HIVE=1为支持hive的意思。

maven编译spark2.3.2源码_第6张图片
11、然后我们执行编译语句。这里我遇到报错
maven编译spark2.3.2源码_第7张图片
maven编译spark2.3.2源码_第8张图片

经过查阅资料,这里修改pom.xml里面的

true

属性,将值改为false。编译成功。

第一次编译会下载很多依赖包,会花很长的时间,耐心等待即可。

你可能感兴趣的:(Spark)