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]
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
版權宣告:本文為博主原創文章,轉載請附上博文連結!