无情 @ 阅读(1424)
spark



背景


官方已经提供了安装包了,为什么要自己编译呢?

Spark能同Hadoop进行交互,而Hadoop的厂商比较多有很多商业版(如cdh版本hadoop)。Spark官方提供的安装包不一定和我们的Hadoop集群版本相同,如果不相同就有可能出现莫名其妙的错误。这时,我们手工指定相应版本进行编译是最好选择


软件版本


spark 2.3.2
scala 2.11.8
jdk 1.8+
maven 3.3.9
hadoop-2.6.0-cdh5.7.0

编译步骤


1、先安装配置jdkscalamaven(略)


2、到spark官网下载源码


我这里是用的spark-2.3.2版本。注意我们是下载源码,选择Source Code。然后点击spark-2.3.2.tgz下载。然后将包传到linux。或者右键点击spark-2.3.2.tgz,复制链接地址。然后再Linux上执行wget + 地址,可以直接将包下载到linux。如果linux没有安装wget,需安装服务。执行


3、修改 make-distribution.sh


VERSION=2.3.2
SCALA_VERSION=2.11
SPARK_HADOOP_VERSION=2.6.0-cdh5.7.0
SPARK_HIVE=1

替换本地mvn


4、修改 pom.xml


1、修改 

<useZincServer>true</useZincServer> 改为false


2、加入cdh仓库

 <repository>

        <id>cloudera</id>

        <name>cloudera Repository</name>

        <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>

</repository>



5、执行编译命令 (通过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 \
-U

注意不要加入 -DskipTests clean package


这些参数的具体使用可以查看 make-distribution.sh脚本。name的设置最好是你使用的hadoop版本号,这样可以一眼看出spark是基于什么hadoop版本编译的。

 - -tgz 编译好的包后缀名。

 -Dhadoop.version hadoop的具体版本号

 -Phadoop-2.6 hadoop的大版本号

 -Phive -Phive-thriftserver支持hive

 -Pyarn支持yarn


编译时间有点长。。。。。 第一次预计在1个小时左右(取决网速 和是否有墙) 


完成后可以看到如下    生成 spark-2.3.2-bin-2.6.0-cdh5.7.0.tgz 文件 


spark编译是个 非常痛苦的过程,中间会遇到各种各样的问题 请各位耐心解决。。。。。。。