Spark源碼編譯

前言:因為線上生產(chǎn)環(huán)境和實際業(yè)務(wù)需求的復(fù)雜性,不可避免地需要修改spark源碼,重新編譯并測試完成后應(yīng)用于線上生產(chǎn)環(huán)境。本文主要介紹作者在Linux(centos 6.5)上重新編譯spark-2.2.1源碼的過程,以及部署編譯環(huán)境所遇到的坑憎乙。

一. 下載源碼

git clone git://github.com/apache/spark.git -b branch-2.2.1  (可能下載不到舊版本)

執(zhí)行完成后,spark源碼會下載在/home/${user_name}/spark目錄叉趣。

也可通過以下方式獲取指定版本源碼包:
wget https://archive.apache.org/dist/spark/spark-2.2.1/spark-2.2.1.tgz

二. 編譯源碼

./build/mvn -Phadoop-2.7 -Pyarn -Dhadoop.version=2.7.3 -Phive -Phive-thriftserver clean package -Dmaven.test.skip=true

參數(shù)介紹:
-Phadoop:Hadoop版本號泞边,默認(rèn)版本2.6.5;
-Dhadoop.version: 同-Phadoop疗杉;
-Pyarn :是否支持Hadoop YARN阵谚;
-Phive:是否在Spark SQL 中支持hive,hive默認(rèn)版本1.2.1;
-Phive-thriftserver:同-Phive梢什;
-Dmaven.test.skip=true:不執(zhí)行測試用例奠蹬,也不編譯測試用例類;

【填坑一】 SSL connect error
報錯信息如下:

[root@cbas-virt-20 spark]# ./build/mvn -Phadoop-2.7 -Pyarn -Dhadoop.version=2.7.3 -Phive -Phive-thriftserver clean package -Dmaven.test.skip=true
exec: curl --progress-bar -L https://downloads.typesafe.com/zinc/0.3.15/zinc-0.3.15.tgz
curl: (35) SSL connect error

gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now
exec: curl --progress-bar -L https://downloads.typesafe.com/scala/2.11.8/scala-2.11.8.tgz
curl: (35) SSL connect error

gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now
./build/mvn: line 119: cd: /root/spark/build/scala-2.11.8/bin/../lib: 沒有那個文件或目錄
./build/mvn: line 120: cd: /root/spark/build/scala-2.11.8/bin/../lib: 沒有那個文件或目錄
./build/mvn: line 143: /root/spark/build/zinc-0.3.15/bin/zinc: 沒有那個文件或目錄
./build/mvn: line 145: /root/spark/build/zinc-0.3.15/bin/zinc: 沒有那個文件或目錄
Using `mvn` from path: /root/spark/build/apache-maven-3.3.9/bin/mvn

報錯分析:
通過./build/mvn編譯源碼時嗡午,下載zinc-0.3.15和scala-2.11.8報錯囤躁,編譯服務(wù)器無法與https://downloads.typesafe.com建立SSL連接。
驗證(通過wget下載):

[root@cbas-virt-20 ~]# wget https://downloads.typesafe.com/zinc/0.3.15/zinc-0.3.15.tgz
--2018-04-24 13:46:02--  https://downloads.typesafe.com/zinc/0.3.15/zinc-0.3.15.tgz
正在解析主機 downloads.typesafe.com... 54.230.129.25, 54.230.129.53, 54.230.129.138, ...
正在連接 downloads.typesafe.com|54.230.129.25|:443... 已連接翼馆。
無法建立 SSL 連接割以。

解決方案:
進入./build/mvn修改對應(yīng)url:

方案一:
curl --progress-bar -L http://downloads.typesafe.com/scala/2.11.8/scala-2.11.8.tgz
curl --progress-bar -L http://downloads.typesafe.com/zinc/0.3.15/zinc-0.3.15.tgz

方案二:
curl --progress-bar -L http://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
curl --progress-bar -L http://downloads.lightbend.com/zinc/0.3.15/zinc-0.3.15.tgz

【填坑二】無效的源發(fā)行版
報錯信息如下:

[INFO] Using zinc server for incremental compilation
[info] 'compiler-interface' not yet compiled for Scala 2.11.8. Compiling...
[info]   Compilation completed in 12.407 s
[warn] Pruning sources from previous analysis, due to incompatible CompileSetup.
[info] Compiling 2 Scala sources and 6 Java sources to /root/spark/common/tags/target/scala-2.11/classes...
[error] javac: 無效的源發(fā)行版: 1.8
[error] 用法: javac <options> <source files>
[error] -help 用于列出可能的選項
[error] Compile failed at 2018-4-24 14:48:20 [14.062s]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Spark Project Parent POM ........................... SUCCESS [03:33 min]
[INFO] Spark Project Tags ................................. FAILURE [ 36.154 s]

報錯分析:
JDK版本不對金度,spark-2.2.1編譯不再支持JDK1.7应媚,所有的編譯和運行都只能在JDK1.8上進行。

解決方案:
從官網(wǎng)下載JDK1.8:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

mv jdk-8u171-linux-x64.tar.gz /usr/java/
tar -zxvf jdk-8u171-linux-x64.tar.gz
vim /etc/profile => export JAVA_HOME=/usr/java/jdk1.8.0_171
source /etc/profile
java -version
javac -version

如果發(fā)現(xiàn)Linux上的JDK并未更新為JDK1.8猜极,需要再進行如下操作:

查看新下載的JDK是否在Linux JDK菜單中:
update-alternatives --config java
update-alternatives --config javac
如果不在中姜,則按如下方式添加:
update-alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_171/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_171/bin/javac 300
再選擇相應(yīng)序號進行系統(tǒng)JDK版本切換(回車確認(rèn)):
update-alternatives --config java
update-alternatives --config javac
驗證:
java -version
javac -version

三. 編譯成功確認(rèn)

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Spark Project Parent POM ........................... SUCCESS [  4.242 s]
[INFO] Spark Project Tags ................................. SUCCESS [  3.027 s]
[INFO] Spark Project Sketch ............................... SUCCESS [  9.362 s]
[INFO] Spark Project Local DB ............................. SUCCESS [  3.107 s]
[INFO] Spark Project Networking ........................... SUCCESS [  6.164 s]
[INFO] Spark Project Shuffle Streaming Service ............ SUCCESS [ 10.022 s]
[INFO] Spark Project Unsafe ............................... SUCCESS [  3.123 s]
[INFO] Spark Project Launcher ............................. SUCCESS [  5.299 s]
[INFO] Spark Project Core ................................. SUCCESS [01:31 min]
[INFO] Spark Project ML Local Library ..................... SUCCESS [02:34 min]
[INFO] Spark Project GraphX ............................... SUCCESS [ 23.556 s]
[INFO] Spark Project Streaming ............................ SUCCESS [ 31.368 s]
[INFO] Spark Project Catalyst ............................. SUCCESS [03:23 min]
[INFO] Spark Project SQL .................................. SUCCESS [05:03 min]
[INFO] Spark Project ML Library ........................... SUCCESS [01:35 min]
[INFO] Spark Project Tools ................................ SUCCESS [  9.692 s]
[INFO] Spark Project Hive ................................. SUCCESS [01:02 min]
[INFO] Spark Project REPL ................................. SUCCESS [  5.806 s]
[INFO] Spark Project YARN Shuffle Service ................. SUCCESS [ 12.565 s]
[INFO] Spark Project YARN ................................. SUCCESS [ 32.809 s]
[INFO] Spark Project Hive Thrift Server ................... SUCCESS [ 24.966 s]
[INFO] Spark Project Assembly ............................. SUCCESS [  4.969 s]
[INFO] Spark Integration for Kafka 0.10 ................... SUCCESS [01:00 min]
[INFO] Kafka 0.10 Source for Structured Streaming ......... SUCCESS [ 15.672 s]
[INFO] Spark Project Examples ............................. SUCCESS [ 25.670 s]
[INFO] Spark Integration for Kafka 0.10 Assembly .......... SUCCESS [  5.885 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20:10 min
[INFO] Finished at: 2018-04-24T19:37:26+08:00
[INFO] Final Memory: 85M/1177M
[INFO] ------------------------------------------------------------------------

博客主頁:http://www.reibang.com/u/e97bb429f278

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市跟伏,隨后出現(xiàn)的幾起案子丢胚,更是在濱河造成了極大的恐慌,老刑警劉巖受扳,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件携龟,死亡現(xiàn)場離奇詭異,居然都是意外死亡勘高,警方通過查閱死者的電腦和手機峡蟋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來华望,“玉大人蕊蝗,你說我怎么就攤上這事±抵郏” “怎么了蓬戚?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宾抓。 經(jīng)常有香客問我子漩,道長,這世上最難降的妖魔是什么石洗? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任幢泼,我火速辦了婚禮,結(jié)果婚禮上劲腿,老公的妹妹穿的比我還像新娘旭绒。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布挥吵。 她就那樣靜靜地躺著重父,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忽匈。 梳的紋絲不亂的頭發(fā)上房午,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音丹允,去河邊找鬼郭厌。 笑死,一個胖子當(dāng)著我的面吹牛雕蔽,可吹牛的內(nèi)容都是我干的折柠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼批狐,長吁一口氣:“原來是場噩夢啊……” “哼扇售!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嚣艇,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤承冰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后食零,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體困乒,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年贰谣,在試婚紗的時候發(fā)現(xiàn)自己被綠了娜搂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡冈爹,死狀恐怖涌攻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情频伤,我是刑警寧澤恳谎,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站憋肖,受9級特大地震影響因痛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岸更,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一鸵膏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怎炊,春花似錦谭企、人聲如沸廓译。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽非区。三九已至,卻和暖如春盹廷,著一層夾襖步出監(jiān)牢的瞬間征绸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工俄占, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留管怠,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓缸榄,卻偏偏與公主長得像渤弛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子碰凶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容