本文介紹spark2.1.0的源碼編譯
1.編譯環境:
Jdk1.8或以上
Hadoop2.7.3
Scala2.10.4
必要條件:
Maven 3.3.9或以上(重要)
點這里下載
http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
修改/conf/setting.xml
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2. 下載http://spark.apache.org
2.1Download
2.2. 解壓
tar -zxvf spark-2.1.0.tgz
3. 進入主目錄,修改編譯文件,進行編譯
修改spark-2.1.0/dev目錄下的make-distribution.sh ,注釋掉原來的指定版本,可以節省時間
vi make-distribution.sh
溫馨提示:
該文件中如圖所示,czf前少個“-”,需要自己修改
注意:
如果你用的hadoop版本是cdh的,那么需要修改spark根目錄pom.xml文件,添加cdh的依賴
<repository>
<id>cloudera</id>
<name>cloudera Repository</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
添加在<repositorys></repositorys>里
3.1設置內存
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
3.2編譯
./dev/make-distribution.sh \
--name 2.7.3 \
--tgz \
-Pyarn \
-Phadoop-2.7 \ -Dhadoop.version=2.7.3 \
-Phive -Phive-thriftserver \
-DskipTests clean package
接下來就靜靜地等待吧,第一次編譯時間可能很長,幾小時或十幾小時,取決於網速,因為要下載很多包
命令解釋:
--name 2.7.3 ***指定編譯出來的spark名字,name=
--tgz ***壓縮成tgz格式
-Pyarn \ ***支持yarn平台
-Phadoop-2.7 \ -Dhadoop.version=2.7.3 \ ***指定hadoop版本為2.7.3
-Phive -Phive-thriftserver \ ***支持hive
-DskipTests clean package ***跳過測試包
好了,spark的編譯到此就結束了
下面分享一下編譯遇到的一些問題
錯誤1:
Failed to execute goal on project spark-launcher_2.11:
Could not resolve dependencies for project org.apache.spark:spark-launcher_2.11:jar:2.1.0:
Failure to find org.apache.hadoop:hadoop-client:jar:hadoop2.7.3 in https://repo1.maven.org/maven2 was cached in the local repository,
resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
解決:遇該錯誤,原因可能是編譯命令中有參數寫錯。。。。(希望你沒遇到
錯誤2:
+ tar czf 'spark-[info] Compile success at Nov 28, 2017 11:27:10 AM [20.248s]-bin-2.7.3.tgz' -C /zhenglh/new-spark-build/spark-2.1.0 'spark-[info] Compile success at Nov 28, 2017 11:27:10 AM [20.248s]-bin-2.7.3'
tar (child): Cannot connect to spark-[info] Compile success at Nov 28, 2017 11: resolve failed
編譯的結果沒打包:
spark-[info] Compile success at Nov 28, 2017 11:27:10 AM [20.248s]-bin-2.7.3
這個錯誤可能第一次編譯的人都會遇到
解決:見溫馨提示