Spark源碼分析調試環境搭建

目前經常使用的Spark版本有三種Cloudera、HDP和Apache,源碼的獲取方式能夠在各自官網下載。本文選擇Apache版本。git

搭建環境所須要的工具以下:github

  • CentOS 7
  • maven 3.5.0
  • Java 1.8.0
  • Scala 2.12.2
  • IntelliJ IDEA2017.1.2

本人選擇在服務器上進行編譯和調試,機器配置爲至強CPU(56核)、內存256G。shell

下載源碼

首先將apache/spark fork到本身的github倉庫,接着再IDEA上經過VCS->Checkout from Version Control->Github 中選擇剛剛fork下來到本地apache

配置本地maven

本文選擇使用本身搭建的maven倉庫,Spark源碼自帶的maven會從官方鏡像上下載所需的依賴,此步驟會比較耗時,設置爲本地maven倉庫後,速度會大幅提高。設置方法以下圖所示編程

preview

編譯Spark源碼

選擇的最新版的Spark,目前是2.3.0。編譯Spark源碼,使用本身安裝的maven進行編譯,其中-T參數是設置編譯的線程數,這裏設置的是20服務器

mvn -T 5 -DskipTests clean package

通過12分鐘的等待,Spark源碼編譯完成,以下圖所示maven

preview

接着能夠經過運行下spark-shell來測試一下編譯結果工具

./bin/spark-shell

preview

運行Spark源碼自帶的實例程序

因爲大多數程序都是從hello world開始的,對應的,Spark的第一個程序爲wordcount,咱們選擇調試JavaWordCount。測試

打開JavaWordCount程序spa

在代碼編輯區右鍵選擇

Create 'JavaWordCount.main()'...

設置以下圖所示

preview

其中

VM options: -Dspark.master=local
Program arguments:/home/spark-sourcecode/examples/src/main/resources/people.txt

保存運行配置,這樣直接運行會出現如下兩個錯誤,缺失flume sink

  • 缺失flume sink

preview

解決方法是在

View->Tool Windows->Maven Projects

在Spark Project External Flume Sink上右鍵選擇Generate Sources and Update Folders

  • 缺乏Spark環境Jars包

preview

解決方案以下:

File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依賴 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/

preview

接着成功運行JavaWordCount

調試例子程序

preview

接下來就能夠看到Spark程序運行時每一個變量的值變化,方便咱們對Spark源碼的設計進行分析。

不過當咱們修改了Spark源碼後,咱們得使用前面的編譯命令對其進行從新編程生成。

相關文章
相關標籤/搜索