1. 準備工作
首先你的系統(tǒng)中需要安裝了 JDK 1.6+,并且安裝了 Scala。之后下載最新版的 IntelliJ IDEA 后锉罐,首先安裝(第一次打開會推薦你安裝)Scala 插件满粗,相關(guān)方法就不多說了。至此瓶蝴,你的系統(tǒng)中應該可以在命令行中運行 Scala。我的系統(tǒng)環(huán)境如下:
- 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 該項目扇住,該過程試你網(wǎng)速而定春缕,大概需要3-10分鐘。
3. 編譯 Spark(開發(fā) jar 包)
當 clone 完畢后艘蹋,IntelliJ IDEA 會自動提示你該項目有對應的 pom.xml 文件锄贼,是否打開。這里直接選擇 Open 該 pom.xml 文件女阀,然后系統(tǒng)會自動解析項目的相關(guān)依賴宅荤,該步驟也會因你的網(wǎng)絡和系統(tǒng)相關(guān)環(huán)境,所需時間不同强品。
進入Spark 根目錄:
依次執(zhí)行 如下命令
sbt assembly
sbt package
可能存在的問題
如果失敗膘侮,可以嘗試多次執(zhí)行
如果提示can run bash,可以嘗試安裝git 然后 將bin 目錄配置到環(huán)境變量中
安裝sbt時的榛,注意切換國內(nèi)的源
該編譯命令將全部采用默認的配置來編譯 Spark琼了,若想指定相關(guān)組件的版本,可以查看 Spark 官網(wǎng)中的 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可以生成部署包午衰,其參數(shù)有:
--tgz:在根目錄下生成 spark-$VERSION-bin.tar.gz立宜,不加參數(shù)是不生成tgz文件,只生成/dist目錄臊岸。--hadoop VERSION:打包時所用的Hadoop版本號橙数,不加參數(shù)時為1.0.4。--with-yarn:是否支持Hadoop YARN扇单,不加參數(shù)時為不支持yarn商模。--with-tachyon:是否支持內(nèi)存文件系統(tǒng)Tachyon,不加參數(shù)時為不支持蜘澜,此參數(shù)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,不加參數(shù)是不生成tgz文件装诡,只生成/dist目錄银受。
--hadoop VERSION:打包時所用的Hadoop版本號,不加參數(shù)時為1.0.4鸦采。
--with-yarn:是否支持Hadoop YARN宾巍,不加參數(shù)時為不支持yarn。
--with-tachyon:是否支持內(nèi)存文件系統(tǒng)Tachyon渔伯,不加參數(shù)時為不支持顶霞,此參數(shù)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. 結(jié)束語
至此玄叠,為了檢驗你的編譯結(jié)果古徒,可以在命令行中進入 spark/bin 目錄,運行 spark-shell读恃,若一切都正常啟動隧膘,則編譯成功。若你修改了 Spark 的源碼寺惫,可以重新使用 sbt 來進行編譯疹吃,并且編譯的時間不會像第一次編譯那么長。自己編譯成功之后肌蜻,接下來可以好好搞搞源碼了互墓,自己調(diào)試運行。 Let's go Spark!
6.人生感言
每天努力蒋搜,只為與你共度良宵篡撵!