目前 Spark 編譯腳本已經將Maven 集成進來了,以方便編譯以及部署。這個腳本將會在它本地 build/ 編譯目錄自動下載和安裝所有編譯過程中所必需的( Maven,Scala 和 Zinc )。可以手動修改dev/make-distribution.sh腳本,使其選擇自己安裝好的Maven,如果不修改這個腳本會自動安裝所需要的編譯環境。確保編譯的機器能正常訪問外網,建議在測試環境編譯,生產上對網絡做各種限制,即便開通了代理也還會報各種詭異在錯誤。
參考官方文檔:http://spark.apache.org/docs/latest/building-spark.html
一、 Spark-2.1.0 編譯環境準備
1、 安裝並配置好Maven(本次編譯使用apache maven 3.5.0)
2、 安裝並配置JDK(本次編譯使用jdk1.8.0_77)
3、 安裝並配置Scala(本次使用scala-2.11.8)
下載spark源碼 spark-2.1.0.tgz-->http://spark.apache.org/downloads.html
二、編譯過程
1、編譯:mvn -Pyarn -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -DskipTests clean package
(1)在/home/hadoop/spark-2.1.0/pom.xml文件添加編譯所需的cloudera軟件包依賴
<repository>
<id>cloudera-repo</id>
<name>Cloudera Repository</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<profile>
<id>cdh5.7.0</id>
<properties>
<hadoop.version>2.6.0-cdh5.7.0</hadoop.version>
<hbase.version>1.2.4-cdh5.7.0</hbase.version>
<zookeeper.version>3.4.5-cdh5.7.0</zookeeper.version>
</properties>
</profile>
(2) 設置MAVEN的JVM參數,根據實際情況調整:exportMAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
(3)開始編譯:mvn -Pyarn -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -DskipTests clean package
可能報的錯誤1.
[ERROR] Failed to execute goalnet.alchim31.maven:scala-maven-plugin:3.2.2:compile (scala-compile-first) onproject spark-core_2.11: Execution scala-compile-first of goalnet.alchim31.maven:scala-maven-plugin:3.2.2:compile failed. CompileFailed ->[Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failedto execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile(scala-compile-first) on project spark-core_2.11: Execution scala-compile-firstof goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile failed.
解決:查看一下是否還有sbt或zinc在運行,有的話kill掉再繼續
可能遇到的錯誤2
解決辦法:檢查pom.xml—> repository配置cloudera-repo的位置是否正確
可能遇到的錯誤3…,在這就不一一列舉了,環境不一樣,錯誤也不一樣
到此爲止spark源碼編譯結束!!!
2、生成可運行的軟件包
(1)閱讀make-distribution.sh腳本,瞭解每一步的執行過程;在dev/make-distribution.sh文件裏註釋掉"${BUILD_COMMAND[@]}",把MAVEN_HOME改成自己之前安裝的MAVEN,如果不改的話這個腳本還會去下載再裝一遍,可能很慢也可能出現各種錯,然後開始構建:dev/make-distribution.sh --name hadoop-2.6.0-cdh5.7.0 --tgz -Psparkr-Phadoop-2.6 -Pyarn -Dhadoop.version=hadoop-2.6.0-cdh5.7.0
在build/mvn腳本里可以看到有install_zinc、install_scala、install_mvn
(1) 在dev/make-distribution.sh文件裏註釋掉"${BUILD_COMMAND[@]}",在make-distribution.sh文件裏把MAVEN_HOME改成自己之前安裝的MAVEN,如果不改的話這個腳本還會去下載再裝一遍,可能很慢也可能出現各種錯,然後開始構建:dev/make-distribution.sh --name hadoop-2.6.0-cdh5.7.0 --tgz -Psparkr -Phadoop-2.6 -Pyarn -Dhadoop.version=hadoop-2.6.0-cdh5.7.0
(2) 執行完構建打包完之後會在根目錄下生成spark-2.1.0-bin-hadoop-2.6.0-cdh5.7.0.tgz文件
到此打包結束!!!
從上圖看出spark-sql運行正常