新手小白第一次構建spark

寫在前面

Building Spark官網寫的明明白白。看別人博客不如官網來的權威,我這篇文章僅僅記錄本人編譯spark源碼的過程,不用於任何指導,有興趣就看,沒興趣就可以到此結束了。跟着官網步驟去操作吧。

工具:

  • Idea2020.1
  • Git2.20.1
  • Maven3.6.0

運行環境:

  • oracle JDK1.8.0
  • scala-sdk-2.11.12

1、下載源碼

如果你生活在種花家,請學會科學上網,這很重要。

因爲不是用來修改spark源碼,於是就直接clone github spark公共倉庫的代碼,clone下來的代碼可以在本地修改編譯運行,但是不可以直接向spark遠程倉庫提交,除非你是spark項目的contributor。問題來了,如果你不是contributor,怎麼向spark貢獻你的代碼呢?自己去查資料好吧

在本地找個目錄,執行git clone命令

(base) dongzhongwei@MacBook-Pro:IdeaProjects$ pwd
/Users/dongzhongwei/IdeaProjects
(base) dongzhongwei@MacBook-Pro:IdeaProjects$ git clone [email protected]:apache/spark.git
Cloning into 'spark'...
remote: Enumerating objects: 345, done.
remote: Counting objects: 100% (345/345), done.
remote: Compressing objects: 100% (152/152), done.
Receiving objects:   2% (17911/731648), 10.82 MiB | 454.00 KiB/s

正在下載中,這將在IdeaProjects目錄下新建一個spark目錄,用來存放spark源碼,我已經開啓了終端代理,無奈公司網速只有這麼快。

2、Idea導入源碼文件

Idea菜單:open or import->選擇spark文件夾->選擇maven導入
此後Idea將進入一段下載spark項目依賴,建立文件index的時間,可能會比較長,耐心等待一下。

這裏我設置了idea http proxy,以便讓maven順利的從中央倉庫下載依賴。

pom文件如果紅色報錯不用管。

3、初次嘗試編譯

spark每個版本所以依賴的hadoop生態組件版本和運行環境都不盡相同,這次我選擇spark2.4.0版本進行編譯。

spark源碼使用了git進行了版本管理,所以在本地新建一個分支並切換到v2.4.0。

(base) dongzhongwei@MacBook-Pro:spark$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
(base) dongzhongwei@MacBook-Pro:spark$ git checkout -b branch-2.4 v2.4.0
Checking out files: 100% (6397/6397), done.
Switched to a new branch 'branch-2.4'
(base) dongzhongwei@MacBook-Pro:spark$ git branch
* branch-2.4
master

切換到2.4.0版本後,idea需要對項目重新進行index和下載依賴jar包,所以又要花費一點時間。

spark支持maven和sbt兩種方式進行編譯和打包,因爲我沒用過sbt,所以還是使用maven進行編譯。

廢話不多說,先clean package起來,這裏maven的啓動參數都是默認的,並沒有作特殊設置。還有一點是貌似spark項目裏自帶了maven和sbt,但是我使用的是自己安裝的maven。

(base) dongzhongwei@MacBook-Pro:spark$ mvn -DskipTests clean package
[INFO] Scanning for projects...

接下來就陷入了漫長的等待時間。。。。看看會不會報什麼錯,出問題也不怕,兵來將擋水來土掩。

[INFO] Reactor Summary for Spark Project Parent POM 2.4.0:
[INFO] 
[INFO] Spark Project Parent POM ........................... SUCCESS [  3.185 s]
[INFO] Spark Project Tags ................................. SUCCESS [  4.922 s]
[INFO] Spark Project Sketch ............................... SUCCESS [  6.144 s]
[INFO] Spark Project Local DB ............................. SUCCESS [  3.572 s]
[INFO] Spark Project Networking ........................... SUCCESS [  7.425 s]
[INFO] Spark Project Shuffle Streaming Service ............ SUCCESS [  4.312 s]
[INFO] Spark Project Unsafe ............................... SUCCESS [  9.603 s]
[INFO] Spark Project Launcher ............................. SUCCESS [  5.707 s]
[INFO] Spark Project Core ................................. SUCCESS [02:50 min]
[INFO] Spark Project ML Local Library ..................... SUCCESS [ 26.513 s]
[INFO] Spark Project GraphX ............................... SUCCESS [ 37.998 s]
[INFO] Spark Project Streaming ............................ SUCCESS [01:10 min]
[INFO] Spark Project Catalyst ............................. SUCCESS [02:44 min]
[INFO] Spark Project SQL .................................. SUCCESS [04:16 min]
[INFO] Spark Project ML Library ........................... SUCCESS [03:29 min]
[INFO] Spark Project Tools ................................ SUCCESS [  6.501 s]
[INFO] Spark Project Hive ................................. SUCCESS [02:23 min]
[INFO] Spark Project REPL ................................. SUCCESS [ 27.728 s]
[INFO] Spark Project Assembly ............................. SUCCESS [  4.571 s]
[INFO] Spark Integration for Kafka 0.10 ................... SUCCESS [ 41.250 s]
[INFO] Kafka 0.10+ Source for Structured Streaming ........ SUCCESS [ 56.293 s]
[INFO] Spark Project Examples ............................. SUCCESS [ 38.532 s]
[INFO] Spark Integration for Kafka 0.10 Assembly .......... SUCCESS [  3.941 s]
[INFO] Spark Avro ......................................... SUCCESS [ 24.703 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22:07 min
[INFO] Finished at: 2020-08-18T16:05:16+08:00

哈哈哈,一次編譯成功,沒有報錯。由於我的機器是雙核8G的配置,因爲build的時間顯得長了一些(ps:多搬磚多賺錢換更好的機器)。

接下來運行一下spark的example,因爲編譯過程中會生成一些jar包,所以不編譯是無法在本地運行spark測試用例的:

(base) dongzhongwei@MacBook-Pro:spark$ ./bin/run-example SparkPi

可以看到輸出:

20/08/18 17:28:24 INFO DAGScheduler: Job 0 finished: reduce at SparkPi.scala:38, took 0.667610 s
Pi is roughly 3.1418757093785468
20/08/18 17:28:24 INFO SparkUI: Stopped Spark web UI at http://172.30.60.103:4040

所以第一次嘗試構建spark到這裏告一段落了,後面就可以在本地調試spark源碼了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章