1. 程式人生 > >Apache spark2.1.0編譯hadoop-2.6-cdh5.11.2的對應版本

Apache spark2.1.0編譯hadoop-2.6-cdh5.11.2的對應版本

Apache spark2.1.0 編譯 hadoop-2.6-cdh5.11.2 的對應版本

搞了兩天,終於把spark編譯成功了,把編譯過程記錄一下

編譯失敗的坑:

  1)linux記憶體不足,maven編譯過程中記憶體溢位

  2)找不到cloudera倉庫

  3)報各種錯誤

考慮到maven下載可能會被牆,於是買了國外的雲主機,記憶體4g,終於編譯成功了,並且編譯速度相當快,只花了8分鐘

成功編譯Apaceh spark成對應的chd版本基本步驟如下(使用make-distribution.sh打包編譯):

1.安裝maven,有版本要求3.x以上的,用最新的就行了

2.安裝jdk 1.7+,2.x以上的spark儘量使用 jdk1.8,並且不要使用自帶的open jdk ,下載oracle的jdk

3.確認maven,jdk都配置完成

4.下載spark,解壓

5.因為要編譯成對應hadoop cdh版本,所以需要在spark HOME目錄下的pom.xml檔案找到repository位置新增

<repository>
<id>cloudera</id>
<name>cloudera repository</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository> 

6.為了加快編譯速度,修改dev/make-distribution.sh檔案

新增以下內容,並把之前的內容註釋,因為預設是通過掃描來獲得這些值的,會消耗一些時間

VERSION=2.1.0  #spark的版本
SCALA_VERSION=2.10.6  #scala的版本,可以在pom.xml檔案的scala.version中找到
SPARK_HADOOP_VERSION=2.6.0-cdh5.11.2 #編譯對應具體的hadoop版本
SPARK_HIVE=1  #支援HIVE

7.避免記憶體溢位

export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m
"可以根據自己電腦記憶體情況調整

8.開始編譯

./dev/make-distribution.sh --name spark2.1.0-cdh5.11.2  --tgz   -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.11.2 -Phive -Phive-thriftserver  -Pyarn
--tgz 打包成 tgz 
  --name 編譯打包的名稱 spark2.1.0-cdh5.11.2 預設會在前面新增spark2.1.0-bin,如果編譯成功那麼全名應該是 spark2.1.0-bin-spark2.1.0-cdh5.11.2

-Phadoop 對應hadoop的大版本

-Dhadoop.version 對應hadoop的具體版本

-Phive  -Pyarn 支援hive,yarn

9.等待完成,編譯成功後會在 spark 的home目錄下生成打包的檔案

10.然後使用xftp軟體把編譯成功的包傳回本地就行

 ps:部落格上的程式碼,直接複製到linux檔案上可能會用問題,所以建議手動輸入