編譯Spark原始碼與單個子專案GraphX
編譯Spark原始碼與單個子專案GraphX
文章目錄
系統環境:ubuntu18.04 LTS 初裝
Spark原始碼獲取
實驗選用spark-2.2.0版本
官網文件:http://spark.apachecn.org/docs/cn/2.2.0/building-spark.html
如果只需要使用spark,可以直接下載pre-built版本。
需要安裝的支援環境
Java環境:實驗證實不能使用OpenJDK,需要使用SunJDK,本實驗中使用的是jdk1.8.0_181。
Scala環境:版本為scala-2.11.8,(需要翻牆,socks開啟全域性代理模式)下載地址為:https://downloads.typesafe.com/scala/2.11.8/scala-2.11.8.tgz
Maven環境:版本為3.5.4,官網下載。
編譯過程中需要的支援加速編譯的包:zinc-0.3.11,(需要翻牆,socks開啟全域性代理模式),下載地址為:https://downloads.typesafe.com/zinc/0.3.11/zinc-0.3.11.tgz
配置環境
在單使用者 ~/.bashrc 檔案中進行路徑配置,在bash啟動時export路徑
相關引用統一放置在 /home/wj/apps/ 目錄下,對Java,scala,maven安裝包解壓,並在檔案 ~/.bashrc 中配置路徑。
export M2_HOME=/home/wj/apps/apache-maven-3.5.4 export PATH=${M2_HOME}/bin:$PATH export JAVA_HOME=/home/wj/apps/jdk1.8.0_181 export JRE_HOME=/home/wj/apps/jdk1.8.0_181/jre export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH export SCALA_HOME=/home/wj/apps/scala-2.11.8 export PATH=${SCALA_HOME}/bin:$PATH
使路徑修改生效:
source ~/.bashrc
測試:
環境配置成功!
編譯spark原始碼
編譯可以使用maven,sbt以及自帶指令碼編譯 ./dev/make-distribution.sh,mvn命令僅編譯spark原始碼,如果需要生成可發行版本,則需要使用指令碼進行編譯。
編譯前配置
-
解壓spark原始碼,在spark目錄下進行操作。
-
將scala-2.11.8資料夾和zinc-0.3.11資料夾拷貝至build目錄下,不拷貝的話,在編譯過程中會自動下載,但是因為防火牆的原因,一般情況下都會失敗,除非翻牆並使用全域性代理。
-
將scala-2.11.8資料夾和zinc-0.3.11資料夾拷貝至build目錄下,不拷貝的話,在編譯過程中會自動下載,但是因為防火牆的原因,一般情況下都會失敗,除非翻牆並使用全域性代理。
-
使用scala版本為2.10和2.11時,需要執行dev目錄下的指令碼,修改一下版本支援。
修改完成,開始進行編譯,編譯分三種方式。
使用mvn進行編譯
build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.5 -DskipTests clean package
命令中指定了對應編譯後spark效能支援的選項。
第一次編譯是會下載大量的maven編譯依賴包,花費時間相對較長。
使用./dev/make-distribution.sh 構建一個可發行的版本
./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn
在沒有安裝R語言的情況下,去掉 --r 和 -Psparkr 選項,使用如下命令進行編譯
./dev/make-distribution.sh --name custom-spark --pip --tgz -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn
引數行 -Psparkr 用於支援R語言執行在spark上的庫
引數行 --r 和 --pip 分別用於支援R語言和Python語言
如果需要編譯支援R語言的spark,需要安裝R外掛,參照如下文章:
https://blog.csdn.net/sddyljsx/article/details/81051078
編譯成功,但是沒有成功構建發行包,需要安裝python以及相關的包setuptools
最終構建成可發行的壓縮包
使用mvn編譯單個子專案graphx
./build/mvn -pl :spark-graphx_2.11 clean install
生成的graphx的包為spark-graphx_2.11-2.2.0.jar
至此,編譯spark原始碼和編譯spark單個子專案完成
另外:
編譯 spark-master:
需要scala版本為2.11.12
需要zinc版本為0.3.15
可編譯成功!