Apache spark2.1.0編譯hadoop-2.6-cdh5.11.2的對應版本
阿新 • • 發佈:2018-12-17
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檔案上可能會用問題,所以建議手動輸入