1. 準備工作
首先你的系統中需要安裝了 JDK 1.6+,并且安裝了 Scala。之后下載最新版的 IntelliJ IDEA 后,首先安裝(第一次打開會推薦你安裝)Scala 插件,相關方法就不多說了。至此,你的系統中應該可以在命令行中運行 Scala。我的系統環境如下:
- Win7
- JDK 1.7.793
- Scala 2.10.44.
- 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 根目錄:
依次執行 如下命令
sbt assembly
sbt package
可能存在的問題
如果失敗,可以嘗試多次執行
如果提示can run bash,可以嘗試安裝git 然后 將bin 目錄配置到環境變量中
安裝sbt時,注意切換國內的源
該編譯命令將全部采用默認的配置來編譯 Spark,若想指定相關組件的版本,可以查看 Spark 官網中的 Build-Spark(http://spark.apache.org/docs/latest/building-spark.html)),查看所有常用的編譯選項。該過程目前不需要 VPN 即可完成,為了預估編譯所需的時間,你可以在新開一個 shell 終端,不斷查看 spark 項目目錄的大小,我最終采用默認配置,編譯成功后的 spark 目錄大小為2.0G。
最后如果可以運行spark-shell 證明編譯成功了,激動!
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 -Pyarnmake-distribution.sh --tgz --skip-java-test -Pyarn -Phadoop-2.6-Dhadoop.version=2.6.0 -Phive -Phive-thriftserver -DskipTests clean package
--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
5. 結束語
至此,為了檢驗你的編譯結果,可以在命令行中進入 spark/bin 目錄,運行 spark-shell,若一切都正常啟動,則編譯成功。若你修改了 Spark 的源碼,可以重新使用 sbt 來進行編譯,并且編譯的時間不會像第一次編譯那么長。自己編譯成功之后,接下來可以好好搞搞源碼了,自己調試運行。 Let's go Spark!
6.人生感言
每天努力,只為與你共度良宵!