搞了兩天,終於把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文件上可能會用問題,因此建議手動輸入