各位工程師累了嗎? 推薦一篇可以讓你技術能力達到出神入化的網站"宅男門診"
1. 准備工作
首先你的系統中需要安裝了 JDK 1.6+,並且安裝了 Scala。之后下載最新版的 IntelliJ IDEA 后,首先安裝(第一次打開會推薦你安裝)Scala 插件,相關方法就不多說了。至此,你的系統中應該可以在命令行中運行 Scala。我的系統環境如下:
1. Mac OS X(10.10.4)
2.JDK 1.7.79
3.Scala 2.10.4
4. IntelliJ IDEA 14
另外,最后還是建議大家開始先使用 pre-built 的 Spark,對 Spark 的運行、使用方法有所了解,編寫了一些 Spark 應用程序后再展開源代碼的閱讀,並嘗試修改源碼,進行手動編譯。
2. 從 Github 導入 Spark 工程
打開IntelliJ IDEA 后,在菜單欄中選擇 VCS→Check out from Version Control→Git,之后在 Git Repository URL 中填入 Spark 項目的地址,並指定好本地路徑,如下圖所示。
點擊該窗口中的的 Clone 后,開始從 Github 中 clone 該項目,該過程試你網速而定,大概需要3-10分鍾。
3. 編譯 Spark(開發 jar 包)
當 clone 完畢后,IntelliJ IDEA 會自動提示你該項目有對應的 pom.xml 文件,是否打開。這里直接選擇 Open 該 pom.xml 文件,然后系統會自動解析項目的相關依賴,該步驟也會因你的網絡和系統相關環境,所需時間不同。
該步驟完成之后,請手動編輯 Spark 根目錄下的 pom.xml 文件,找到其中指定 java 版本的那一行(java.version),根據你的系統環境,如果使用的是 jdk1.7 ,那么或許需要你將其值改成1.7(默認是1.6)。
之后打開 shell 終端,在命令行中進入剛才導入的 spark 項目根目錄,執行
sbt/sbt assembly
該編譯命令將全部采用默認的配置來編譯 Spark,若想指定相關組件的版本,可以查看 Spark 官網中的 Build-Spark(http://spark.apache.org/docs/latest/building-spark.html),查看所有常用的編譯選項。該過程目前不需要 VPN 即可完成,為了預估編譯所需的時間,你可以在新開一個 shell 終端,不斷查看 spark 項目目錄的大小,我最終采用默認配置,編譯成功后的 spark 目錄大小為2.0G。
4.編譯 spark (生成部署安裝包)
編譯完源代碼后,雖然直接用編譯后的目錄再加以配置就可以運行spark,但是這時目錄很龐大,部署起來不方便,所以需要生成部署包。
spark源碼根目錄下帶有一個腳本文件make-distribution.sh可以生成部署包,其參數有:
--tgz:在根目錄下生成 spark-$VERSION-bin.tar.gz,不加參數是不生成tgz文件,只生成/dist目錄。
--hadoop VERSION:打包時所用的Hadoop版本號,不加參數時為1.0.4。
--with-yarn:是否支持Hadoop YARN,不加參數時為不支持yarn。
--with-tachyon:是否支持內存文件系統Tachyon,不加參數時為不支持,此參數spark1.0.0-SNAPSHOT之后提供。
如果要生成spark支持yarn、hadoop2.6.0的部署包,只需要將源代碼復制到指定目錄,進入該目錄后運行:
make-distribution.sh --name custom-spark --tgz -Psparkr -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn
make-distribution.sh --tgz --skip-java-test -Pyarn -Phadoop-2.6-Dhadoop.version=2.6.0 -Phive -Phive-thriftserver -DskipTests clean package
阿斯達f
5. 結束語
至此,為了檢驗你的編譯結果,可以在命令行中進入 spark/bin 目錄,運行 spark-shell,若一切都正常啟動,則編譯成功。若你修改了 Spark 的源碼,可以重新使用 sbt 來進行編譯,並且編譯的時間不會像第一次編譯那么長。