Spark-2.1.0-hadooop-2.6.0-cdh5.7.0原始碼編譯
目前 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執行正常