源碼下載
源碼獲取有兩種渠道:一種是通過(guò)Spark官網(wǎng)直接下載,第二種是通過(guò)github直接將spark的代碼clone下來(lái)。
官網(wǎng)地址:https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0.tgz
github地址:https://github.com/apache/spark/tree/branch-2.2
解壓后目錄:

源碼編譯
| 工具 | 版本 |
|---|---|
| maven | 3.3.9+ |
| jdk | 8+ |
設(shè)置maven內(nèi)存
<pre>
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
</pre>
如果不調(diào)大maven內(nèi)存,有可能會(huì)報(bào):
<pre>
[INFO] Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.11/classes...
[ERROR] Java heap space -> [Help 1]
</pre>
Maven源碼編譯
自動(dòng)化構(gòu)建
在源碼build目錄下面有一個(gè)maven的獨(dú)立安裝腳本,這樣能夠幫助你輕松構(gòu)建源碼,這個(gè)腳本會(huì)自動(dòng)下載和安裝所有必須的構(gòu)建要求。
<pre>
./build/mvn -DskipTests clean package
</pre>
指定Hadoop版本
可以通過(guò)hadoop.version指定Hadoop版本,如果未設(shè)置則采用默認(rèn)的2.6.x版本,如果yarn的版本與Hadoop不一致,可以使用yarn.version來(lái)指定版本。
<pre>
./build/mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.3 -DskipTests clean package
</pre>
Hive和JDBC支持
Hive默認(rèn)版本是1.2.1
<pre>
With Hive 1.2.1 support
./build/mvn -Pyarn -Phive -Phive-thriftserver -DskipTests clean package
</pre>
使用Mesos
如果使用Mesos作為資源管理容器,可以指定mesos:
<pre>
./build/mvn -Pmesos -DskipTests clean package
</pre>
單獨(dú)構(gòu)建子模塊
如果想要單獨(dú)構(gòu)建子模塊,可以是使用maven的-pl參數(shù)。spark-streaming_2.11是其maven坐標(biāo)的artifactId,定義在streaming/pom.xml中。
<pre>
./build/mvn -pl :spark-streaming_2.11 clean install
</pre>
SBT源碼編譯
官方推薦打包使用maven來(lái)構(gòu)建,但因?yàn)镾BT支持日常的開發(fā),所以它能夠更快速的迭代編譯。
<pre>
./build/sbt package
</pre>
編譯完成

IDEA導(dǎo)入源碼
Rebuild Project
打開idea后,open之前剛才編譯好的目錄,需要做一些額外的操作,否則Rebuild Project會(huì)失敗。
1、點(diǎn)擊File→Project Structure->Model->spark-streaming-flume-sink_2.11,右鍵target目錄取消Exclude。

2、當(dāng)前target->scala-2.11->src_managed->main→compiled_avro右鍵標(biāo)記為Source目錄。
3、Build->Rebuild Project 項(xiàng)目即可
環(huán)境配置
Spark的配置都在conf目錄下面,可以將spark-env.sh.template復(fù)制一份spark-env.sh,進(jìn)行相應(yīng)的配置(直接運(yùn)行可skip)。
Spark運(yùn)行
sbin/start-master.sh
sbin/start-slave.sh spark://{localhost}為你主機(jī),如果不知道可以查看master的打印日志,會(huì)將其打印出來(lái)。
檢查WebUI:http://localhost:8080/

運(yùn)行作業(yè):bin/run-example SparkPi
Pi is roughly 3.1471357356786784
ok搭建完成