1. 程式人生 > >編譯Spark原始碼與單個子專案GraphX

編譯Spark原始碼與單個子專案GraphX

編譯Spark原始碼與單個子專案GraphX

文章目錄

系統環境:ubuntu18.04 LTS 初裝

Spark原始碼獲取

實驗選用spark-2.2.0版本

,該版本目前有最新的中文文件,在Apache官網下載,下載地址為:https://spark.apache.org/downloads.html
官網文件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原始碼

編譯可以使用mavensbt以及自帶指令碼編譯 ./dev/make-distribution.sh,mvn命令僅編譯spark原始碼,如果需要生成可發行版本,則需要使用指令碼進行編譯。

編譯前配置

  1. 解壓spark原始碼,在spark目錄下進行操作。

  2. 將scala-2.11.8資料夾和zinc-0.3.11資料夾拷貝至build目錄下,不拷貝的話,在編譯過程中會自動下載,但是因為防火牆的原因,一般情況下都會失敗,除非翻牆並使用全域性代理。

  3. 將scala-2.11.8資料夾和zinc-0.3.11資料夾拷貝至build目錄下,不拷貝的話,在編譯過程中會自動下載,但是因為防火牆的原因,一般情況下都會失敗,除非翻牆並使用全域性代理。

    修改為:http://maven.aliyun.com/nexus/content/groups/public/
    在這裡插入圖片描述

  4. 使用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
可編譯成功!