搞了两天,终于把spark编译成功了,把编译过程记录一下linux
编译失败的坑:oracle
1)linux内存不足,maven编译过程当中内存溢出maven
2)找不到cloudera仓库oop
3)报各类错误url
成功编译Apaceh spark成对应的chd版本基本步骤以下(使用make-distribution.sh打包编译):spa
1.安装maven,有版本要求3.x以上的,用最新的就好了scala
2.安装jdk 1.7+,2.x以上的spark尽可能使用 jdk1.8,而且不要使用自带的open jdk ,下载oracle的jdkcode
3.确认maven,jdk都配置完成server
4.下载spark,解压xml
5.由于要编译成对应hadoop cdh版本,因此须要在spark HOME目录下的pom.xml文件找到repository位置添加
<repository> <id>cloudera</id> <name>cloudera repository</name> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> </repository>
6.为了加快编译速度,修改dev/make-distribution.sh文件
添加如下内容,并把以前的内容注释,由于默认是经过扫描来得到这些值的,会消耗一些时间
VERSION=2.1.0 #spark的版本 SCALA_VERSION=2.10.6 #scala的版本,能够在pom.xml文件的scala.version中找到 SPARK_HADOOP_VERSION=2.6.0-cdh5.11.2 #编译对应具体的hadoop版本 SPARK_HIVE=1 #支持HIVE
7.避免内存溢出
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
能够根据本身电脑内存状况调整
8.开始编译
./dev/make-distribution.sh --name spark2.1.0-cdh5.11.2 --tgz -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.11.2 -Phive -Phive-thriftserver -Pyarn
--tgz 打包成 tgz
--name 编译打包的名称 spark2.1.0-cdh5.11.2 默认会在前面添加spark2.1.0-bin,若是编译成功那么全名应该是 spark2.1.0-bin-spark2.1.0-cdh5.11.2 -Phadoop 对应hadoop的大版本 -Dhadoop.version 对应hadoop的具体版本 -Phive -Pyarn 支持hive,yarn
9.等待完成,编译成功后会在 spark 的home目录下生成打包的文件
10.而后使用xftp软件把编译成功的包传回本地就行
ps:博客上的代码,直接复制到linux文件上可能会用问题,因此建议手动输入