Spark-1.0.1 的make-distribution.sh編譯、SBT編譯、Maven編譯 三種編譯方法


 

  fesh個人實踐,歡迎經驗交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3775343.html

  本文編譯方法所支持的hadoop環境是Hadoop-2.2.0,YARN是2.2.0,JAVA版本為1.8.0_11,操作系統Ubuntu14.04

1、spark自帶編譯方法
注:不同版本的Spark編譯命令有所不同,請先查看$SPARK_HOME/make-distribution.sh文件。
使用spark中自帶的編譯腳本 make-distribution.sh (需要先安裝Maven ,參見《 Maven-3.2.2安裝配置》)
cd spark-1.0.1
./make-distribution.sh --hadoop 2.2.0 --with-yarn --tgz
腳本文件make-distribution.sh可以生成部署包,其參數有:

  --tgz: Additionally creates spark-$VERSION-bin.tar.gz
  --hadoop VERSION: Builds against specified version of Hadoop.
  --with-yarn: Enables support for Hadoop YARN.
  --with-hive: Enable support for reading Hive tables.
  --name: A moniker for the release target. Defaults to the Hadoop verison.

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

好像Java版本1.8在這里有版本問題?默認在1.6環境下,但我居然編譯成功了,呵呵

注:之前加了--with-tachyon 我總是編譯成功,但生成tgz部署包失敗,不知道為什么。今天我在JDK1.7.0_51環境(應該與JDK版本無關)下,去掉了--with-tachyon ,編譯成功,並且生成了spark-1.0.1-

  bin-2.2.0.tgz部署包

 在$SPARK_HOME/assembly/target/scala-2.10目錄下生成:  spark-assembly-1.0.1-hadoop2.2.0.jar
 在$SPARK_HOME/examples/target/scala-2.10目錄下生成:  spark-examples-1.0.1-hadoop2.2.0.jar
 在$SPARK_HOME/dist/lib目錄下生成:  spark-assembly-1.0.1-hadoop2.2.0.jar 和 spark-examples-1.0.1-hadoop2.2.0.jar
 在$SPARK_HOME根目錄下生成Spark部署包: spark-1.0.1-bin-2.2.0.tgz

編譯結果:

2、SBT編譯方法
注:不同版本的Spark命令有所變化,請先查看$SPARK_HOME/sbt/sbt文件。
解壓源代碼並復制到指定目錄,然后進入該目錄,運行:
tar -zxvf spark-1.0.0.tar.gz
cd spark-1.0.1 SPARK_HADOOP_VERSION=2.2.0 SPARK_YARN=true ./sbt/sbt assembly
export http_proxy=http://proxy-server:port  需要添加代理,由於我沒有添加代理,所以編譯失敗了@_@!以后有時間再試試
3、maven編譯(參考官網)
使用Maven構建Spark需要Maven 3.0.4或更新和Java 6 +。
安裝好maven3.2.2,並設置環境變量MAVEN_HOME,將$MAVEN_HOME/bin加入PATH變量。
1)您需要配置Maven使用比平時更多的內存設置maven_opts。建議下列設置( Java 1.8以上不需要設置):
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
如果你沒有運行,你可以看到下面的錯誤:
[INFO] Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.10/classes...
[ERROR] PermGen space -> [Help 1]

[INFO] Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.10/classes...
[ERROR] Java heap space -> [Help 1]

2)指定Hadoop版本並編譯

由於HDFS對版本不是協議兼容的,如果你想從HDFS讀,你需要在你的環境中建立針對特定HDFS版本的Spark。你可以通過“hadoop.version”來做到這。如果未設置,將默認建立針對Hadoop 1.0.4的Spark。請注意,某些建立配置文件是為特定的Hadoop版本要求:
  
對於Hadoop 2.X with YARN,編譯:

# Apache Hadoop 2.2.X

mvn -Pyarn -Phadoop-2.2 -Dhadoop.version=2.2.0 -DskipTests clean package

如果是其他版本的YARN和HDFS,則按下面編譯:

# Different versions of HDFS and YARN.

mvn -Pyarn-alpha -Phadoop-2.3 -Dhadoop.version=2.3.0 -Dyarn.version=0.23.7 -DskipTests clean package

編譯結果為:

 
 
 在$SPARK_HOME/assembly/target/scala-2.10目錄下生成:  spark-assembly-1.0.1-hadoop2.2.0.jar
 在$SPARK_HOME/examples/target/scala-2.10目錄下生成:  spark-examples-1.0.1-hadoop2.2.0.jar
 

另外,這篇文章的編譯講得也很詳細,也可以參考:http://mmicky.blog.163.com/blog/static/1502901542014312101657612/

  以及文章 http://www.cnblogs.com/hseagle/p/3732492.html

 

Spark源碼和編譯后的源碼、部署包我分享在: http://pan.baidu.com/s/1c0y7JKs 提取密碼: ccvy 

 

 


免責聲明!

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



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