Apache Spark源碼走讀之9 -- Spark源碼編譯


歡迎轉載,轉載請注明出處,徽滬一郎。

概要

本來源碼編譯沒有什么可說的,對於java項目來說,只要會點maven或ant的簡單命令,依葫蘆畫瓢,一下子就ok了。但到了Spark上面,事情似乎不這么簡單,按照spark officical document上的來做,總會出現這樣或那樣的編譯錯誤,讓人懊惱不已。

今天閑來無事,又重試了一把,居然o了,做個記錄,以備后用。

准備

我的編譯機器上安裝的Linux是archlinux,並安裝后如下軟件

  1. scala 2.11
  2. maven
  3. git

下載源碼

第一步當然是將github上的源碼下載下來

git clone https://github.com/apache/spark.git

 源碼編譯

不是直接用maven也不是直接用sbt,而是使用spark中自帶的編譯腳本make-distribution.sh

export SCALA_HOME=/usr/share/scala
cd $SPARK_HOME
./make-distribution.sh

如果一切順利,會在$SPARK_HOME/assembly/target/scala-2.10目錄下生成目標文件,比如

assembly/target/scala-2.10/spark-assembly-1.0.0-SNAPSHOT-hadoop1.0.4.jar

使用sbt編譯

之前使用sbt編譯一直會失敗的主要原因就在於有些jar文件因為GFW的原因而訪問不了。解決之道當然是添加代理才行。

代理的添加有下面幾種方式,具體哪種好用,一一嘗試吧,對於最新的spark。使用如下指令即可。

export http_proxy=http://proxy-server:port

方法二,設置JAVA_OPTS

JAVA_OPTS="-Dhttp.proxyServer=proxy-server -Dhttp.proxyPort=portNumber"

運行測試用例

既然能夠順利的編譯出jar文件,那么肯定也改動兩行代碼來試試效果,如果知道自己的發動生效沒有呢,運行測試用例是最好的辦法了。

假設已經修改了$SPARK_HOME/core下的某些源碼,重新編譯的話,使用如下指令

export SCALA_HOME=/usr/share/scala
mvn package -DskipTests

假設當前在$SPARK_HOME/core目錄下,想要運行一下RandomSamplerSuite這個測試用例集合,使用以下指令即可。

export SPARK_LOCAL_IP=127.0.0.1
export SPARK_MASTER_IP=127.0.0.1
mvn -Dsuites=org.apache.spark.util.random.RandomSamplerSuite test

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM