1. 程式人生 > >Spark2.0.0源碼編譯

Spark2.0.0源碼編譯

har 博文 計算 mave 依賴 tom sha 方式 port

Hive默認使用MapReduce作為執行引擎,即Hive on mr,Hive還可以使用Tez和Spark作為其執行引擎,分別為Hive on Tez和Hive on Spark。由於MapReduce中間計算均需要寫入磁盤,而Spark是放在內存中,所以總體來講Spark比MapReduce快很多。默認情況下,Hive on Spark 在YARN模式下支持Spark。

因為本人在之前搭建的集群中,部署的環境為:
hadoop2.7.3

hive2.3.4

scala2.12.8

kafka2.12-2.10

jdk1.8_172

hbase1.3.3

sqoop1.4.7

zookeeper3.4.12

#java
export JAVA_HOME=/usr/java/jdk1.8.0_172-amd64
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#hbase
export HBASE_HOME=/home/workspace/hbase-1.3.3
export PATH=$HBASE_HOME/bin:$PATH

#hadoop
export HADOOP_HOME
=/home/workspace/hadoop-2.7.3 export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin #hive export HIVE_HOME=/opt/apache-hive-2.3.4-bin export HIVE_CONF_DIR=$HIVE_HOME/conf export PATH
=.:$HIVE_HOME/bin:$PATH export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/* export HCAT_HOME=$HIVE_HOME/hcatalog export PATH=$HCAT_HOME/bin:$PATH #Sqoop export SQOOP_HOME=/home/workspace/sqoop-1.4.7.bin__hadoop-2.6.0 export PATH=$PATH:$SQOOP_HOME/bin # zookeeper export ZK_HOME=/home/workspace/software/zookeeper-3.4.12 export PATH=$ZK_HOME/bin:$PATH #maven export MAVEN_HOME=/home/workspace/software/apache-maven-3.6.0 export M2_HOME=$MAVEN_HOME export PATH=$PATH:$MAVEN_HOME/bin #scala export SCALA_HOME=/usr/local/scala/scala-2.12.8 export PATH=$SCALA_HOME/bin:$PATH #kafka export KAFKA_HOME=/home/workspace/software/kafka_2.12-2.1.0 export PATH=$KAFKA_HOME/bin:$PATH #kylin export KYLIN_HOME=/home/workspace/software/apache-kylin-2.6.0 export KYLIN_CONF_HOME=$KYLIN_HOME/conf export PATH=:$PATH:$KYLIN_HOME/bin:$CATALINE_HOME/bin export tomcat_root=$KYLIN_HOME/tomcat #變量名小寫 export hive_dependency=$HIVE_HOME/conf:$HIVE_HOME/lib/*:$HCAT_HOME/share/hcatalog/hive-hcatalog-core-2.3.4.jar #變量名小寫

現在想部署spark上去,鑒於hive2.3.4支持的spark版本為2.0.0,所以決定部署spark2.0.0,但是spark2.0.0,默認是基於scala2.11.8編譯的,所以,決定基於scala2.12.8手動編譯一下spark源碼,然後進行部署。本文默認認為前面那些組件都已經安裝好了,本篇只講如何編譯spark源碼,如果其他的組件部署不清楚,請參見本人的相關博文。

1. 下載spark2.0.0源碼

cd /home/workspace/software
wget http://archive.apache.org/dist/spark/spark-2.0.0/spark-2.0.0.tgz
tar -xzf spark-2.0.0.tgz
cd spark-2.0.0

2. 修改pom.xml改為用scala2.12.8編譯

vim pom.xml

修改scala依賴版本為2.12.8(原來為2.11.8)

<scala.version>2.12.8</scala.version>
<scala.binary.version>2.12</scala.binary.version>

3. 修改make-distribution.sh

cd /home/workspace/software/spark-2.0.0/dev
vim make-distribution.sh 

修改其中的VERSION,SCALA_VERSION,SPARK_HADOOP_VERSION,SPARK_HIVE為對應的版本值

技術分享圖片

其中SPARK_HIVE=1表示打包hive,非1值為不打包hive。

此步非必須,若不給定,它也會從maven源中下載,為節省編譯時間,直接給定;

4. 下載zinc0.3.9

wget https://downloads.typesafe.com/zinc/0.3.9/zinc-0.3.9.tgz     #下載zinc-0.3.9.tgz,scala編譯庫,如果不事先下載,編譯時會自動下載

將zinc-0.3.9.tgz解壓到/home/workspace/software/spark-2.0.0/build目錄下

tar -xzvf zinc-0.3.9.tgz -C /home/workspace/software/spark-2.0.0/build

5. 下載scala2.12.8 binary file

wget https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.tgz    #下載scala-2.12.8.tgz,scala編譯庫,如果不事先下載,編譯時會自動下載
tar -xzvf scala-2.12.8.tgz -C /home/workspace/software/spark-2.0.0/build

技術分享圖片

6. 使用make-distribution.sh方式進行編譯

./make-distribution.sh  --name "hadoop2.7.3-with-hive2.3.4"   --tgz  -Dhadoop.version=2.7.3        -Phadoop-2.7.3  -Pyarn -Phive -Phive-thriftserver

技術分享圖片

編譯時間大概在半小時以上。

技術分享圖片

編譯出來的二進制包在/home/workspace/software/spark-2.0.0根目錄下

技術分享圖片

編譯完成!

Spark2.0.0源碼編譯