目前經常使用的Spark版本有三種Cloudera、HDP和Apache,源碼的獲取方式能夠在各自官網下載。本文選擇Apache版本。git
搭建環境所須要的工具以下:github
本人選擇在服務器上進行編譯和調試,機器配置爲至強CPU(56核)、內存256G。shell
首先將apache/spark fork到本身的github倉庫,接着再IDEA上經過VCS->Checkout from Version Control->Github 中選擇剛剛fork下來到本地apache
本文選擇使用本身搭建的maven倉庫,Spark源碼自帶的maven會從官方鏡像上下載所需的依賴,此步驟會比較耗時,設置爲本地maven倉庫後,速度會大幅提高。設置方法以下圖所示編程
選擇的最新版的Spark,目前是2.3.0。編譯Spark源碼,使用本身安裝的maven進行編譯,其中-T參數是設置編譯的線程數,這裏設置的是20服務器
mvn -T 5 -DskipTests clean package
通過12分鐘的等待,Spark源碼編譯完成,以下圖所示maven
接着能夠經過運行下spark-shell來測試一下編譯結果工具
./bin/spark-shell
因爲大多數程序都是從hello world開始的,對應的,Spark的第一個程序爲wordcount,咱們選擇調試JavaWordCount。測試
打開JavaWordCount程序spa
在代碼編輯區右鍵選擇
Create 'JavaWordCount.main()'...
設置以下圖所示
其中
VM options: -Dspark.master=local
Program arguments:/home/spark-sourcecode/examples/src/main/resources/people.txt
保存運行配置,這樣直接運行會出現如下兩個錯誤,缺失flume sink
解決方法是在
View->Tool Windows->Maven Projects
在Spark Project External Flume Sink上右鍵選擇Generate Sources and Update Folders
解決方案以下:
File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依賴 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/
接着成功運行JavaWordCount
接下來就能夠看到Spark程序運行時每一個變量的值變化,方便咱們對Spark源碼的設計進行分析。
不過當咱們修改了Spark源碼後,咱們得使用前面的編譯命令對其進行從新編程生成。