1. 程式人生 > >spark原始碼編譯成功案例, 版本,修改點

spark原始碼編譯成功案例, 版本,修改點

1.spark的下載

開啟網址spark.apache.org,點選download,選擇想要下載的版本,我這裡選擇了最新的2.2.0版本

在choose a package type 中選擇source code,獲取spark2.2.0的下載映象,即可完成下載。

(官網有時候版本切換會有問題,可以在download spark下方的signatures and checksums中選擇想要的版本)

2.spark的編譯

spark2.2.0的maven版本要求3.3.9以上,jdk要求8以上。scala最好選擇2.11版本,記憶體要求2-8個G(重要)


編譯這部分主要看官網,spark.apache.org

官網給了兩種編譯方式,個人喜歡打包的方式,因為打包完成後可以根據自己的需要去部署spark環境,所以也推薦打包編譯方式

spark原始碼中提供了一個指令碼,是根目錄dev下的make-distribution,我們可以通過這個指令碼對spark進行編譯

命令是這樣的:./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz  -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0

--name 是指定編譯完成後的檔名的,用版本號即可,清晰明瞭,檔名的格式可以在make-distribution.sh原始碼中找到:spark-$VERSION-bin-$NAME.tgz

--tgz 就是說要打包成tgz格式 

-P 對應的是pom.xml原始碼中的<profile>,根據需要進行選擇

-D 是用來更改版本的,我們更改hadoop的版本為2.6.0-cdh5.7.0,也能在pom.xml中找到

第一次編譯時間會很慢,記憶體和網速夠用的話1個小時也許就能編譯完成,我第一次編譯整整編譯了一個通宵,這裡有一個提高編譯速度的小tip

我們看make-distribution.sh的原始碼,找到這部分

VERSION=$("$MVN" help:evaluate -Dexpression=project.version [email protected]

2>/dev/null | grep -v "INFO" | tail -n 1)
SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version [email protected] 2>/dev/null\
    | grep -v "INFO"\
    | tail -n 1)
SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version [email protected] 2>/dev/null\
    | grep -v "INFO"\
    | tail -n 1)
SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive [email protected] 2>/dev/null\
    | grep -v "INFO"\
    | fgrep --count "<id>hive</id>";\
    # Reset exit status to 0, otherwise the script stops here if the last grep finds nothing\
    # because we use "set -o pipefail"
    echo -n)

這部分是檢測我們的環境變數以確定我們的spark,scala,hadoop和hive的版本,我們可以通過直接將我們的版本加上去來提速

VERSION = 2.2.0 #spark的版本為2.2.0

SCALA_VERSION = 2.11 #scala的版本為2.11

SPARK_HADOOP_VERSION = 2.6.0-cdh5.7.0 #hadoop的版本為2.6.0-cdh5.7.0

SPARK_HIVE = 1 #支援hive

最後我編譯完成後的檔案為spark2.2.0-bin-2.6.0-cdh5.7.0.tgz,我們就可以用這個包進行部署啦
--------------------- 
作者:BornZhu 
來源:CSDN 
原文:https://blog.csdn.net/BornZhu/article/details/78542620 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

 

 

===============================================================

 

前期準備

maven3.3.9+安裝

jdk1.7+jdk安裝

scala安裝

下載

http://spark.apache.org/downloads.html

這裡是下載原始碼,根據我們生成的環境自己編譯

官網編譯原始碼介紹

建立目錄

mkdir /app/spark

cd /app/spark

解壓

tar -zxvf spark-2.2.0.tgz

 

使用dev中的make-distribution.sh命令編譯

cd /app/spark/spark-2.2.0

 ./dev/make-distribution.sh --name 2.9.0 --tgz -Psparkr -Phadoop-2.9 -Phive -Phive-thriftserver -Pmesos -Pyarn -Dhaoop.version=2.9.0

引數介紹

-Dhaoop.version=2.9.0

--name    編譯後spark安裝包的名字

--tgz    以tgz方式壓縮

-Psparkr    編譯出來的spark支援R語言

-Phive    編譯出來的spark支援對hive的操作

 -Phive-thriftserver    編譯出來的spark支援對hive的操作

-Pmesos    編譯出來的spark支援在mesos執行

-Pyarn    編譯出來的spark支援在yarn執行

編譯成功

生成的包就在spark原始碼的根目錄下

生成的名稱可能不一樣。

先要安裝scala

解壓

tar -zxvf spark-2.2.0-bin-2.9.0.tgz

移動

mv spark-2.2.0-bin-2.9.0 /app/spark

配置環境變數

vi ~/.bashrc

export SPARK_HOME=/app/spark/spark-2.2.0-bin-2.9.0
export PATH=:$PATH:$SPARK_HOME/bin

使配置立刻生效

source ~/.bashrc

進入目錄

cd /app/spark/spark-2.2.0-bin-2.9.0/bin

檢驗是否安裝成功

./spark-shell --version

 ./spark-shell --master local[2]

圖形使用者介面

http://node1:4040/jobs/
--------------------- 
作者:jy02268879 
來源:CSDN 
原文:https://blog.csdn.net/jy02268879/article/details/81009217 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

 

 

=========================================================

 

這幾天在學習Spark,考慮到以後會涉及到修改原始碼,就乾脆重原始碼編譯開始學習了,不料編譯過程中遇到了各種奇奇怪怪的坑,網上也沒找到解決方案,所幸最後在錯誤日誌的幫助下成功解決,這裡做個記錄,方便自己檢視,也希望能幫到有需要的夥伴,第一次寫部落格,有寫得不合理或者不對的地方,歡迎大家批評指正。

注意:很抱歉,未對該編譯方法打的包進行測試就發了博文,最後測試該方法打的包是不能正常執行的,但沒刪該博文的原因在於,這算是一種解決問題的思路吧。另外在文章末尾新增編譯成功且執行正常的編譯方法. 

廢話不多說,直接進入正題 
一、環境準備 
1) JDK 1.8+ 
2) Maven 3.3.9+ 
3) Scala 2.10 /Scala 2.11.8 
4) 下載解壓Spark-2.2.0原始碼並 
vim ./dev/make-distribution.sh 


二、編譯 
1)根據你本地的Scala版本: ./dev/change-scala-version.sh 2.10 或者 ./dev/change-scala-version.sh 2.11 
2)./dev/make-distribution.sh –name 2.6.0-cdh5.7.0 –tgz -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver

三、可能遇到的坑及解決辦法 
 
解決步驟1: 
按錯誤提示,加-rf :spark-hive-thriftserver_2.10從失敗的地方重試,加-X顯示詳細錯誤資訊 
./dev/make-distribution.sh –name 2.6.0-cdh5.7.0 –tgz -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -rf :spark-hive-thriftserver_2.10 -X 

解決步驟2: 
1) cd 解壓後的spark-2.2.0原始碼根目錄 
2) vim pom.xml 
3) vim 命令搜尋jetty 
 
4)查詢jetty版本 
 


5)將jetty-servlet和jetty-server依賴新增到報錯提示的/opt/package/spark-2.2.0/sql/hive-thriftserver模組下的pom檔案,版本直接寫上 
cd /opt/package/spark-2.2.0/sql/hive-thriftserver 


6)重新從失敗的地方編譯 
./dev/make-distribution.sh –name 2.6.0-cdh5.7.0 –tgz -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -rf :spark-hive-thriftserver_2.10 -X 


OK,一波三折,總算成功了 
總結一下:遇到錯誤不要怕,首先百度,百度不到谷歌,谷歌不到自己再看看日誌,原始碼之下無祕密,只要思想不滑坡,辦法總比困難多,坑是踩不完的,當你是第一個踩坑的人時,更應該靜下來分析問題、解決問題。

該方法打的包執行報錯: 


顯然,上面的方法雖然編譯成功了,但是最終的包是不能用的,最後附上編譯成功且能用的編譯組合

一、環境準備 
1) JDK 1.8u152 
2) Maven 3.5.2 
3)Scala 2.11.8 
4) 下載解壓Spark-2.2.0原始碼並 
vim ./dev/make-distribution.sh 
 
5)新增cloudera的maven倉庫: 


<repository>
    <id>cloudera</id>
    <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
1
2
3
4
二、編譯 
1) ./dev/change-scala-version.sh 2.11 
2)

./dev/make-distribution.sh \
--name 2.6.0-cdh5.7.0 \
--tgz \
-Pyarn \
-Phadoop-2.6 \
-Dhadoop.version=2.6.0-cdh5.7.0 \
-Phive \
-Phive-thriftserver
1
2
3
4
5
6
7
8
執行成功: 

--------------------- 
作者:琪琪qiqi_77 
來源:CSDN 
原文:https://blog.csdn.net/suisongtiao1799/article/details/80223068 
版權宣告:本文為博主原創文章,轉載請附上博文連結!