从http://spark.apache.org/下载spark源码包。
然后
(1)解压
$tar -zxvf spark-x.y.z-bin-hadoopx.y.tgz
(2)修改pom.xml文件
该文件在解压目录中的conf文件夹当中,我的部分修改如下:
<java.version>1.8</java.version>
<hadoop.version>2.7.3</hadoop.version>
<protobuf.version>2.5.0</protobuf.version>
<hbase.version>0.98.9-hadoop2</hbase.version>
<zookeeper.version>3.4.6</zookeeper.version>
<derby.version>10.11.1.1</derby.version>
(3)如果要支持Scala 2.11,请运行以下脚本:-- 该版本太新了,目前还有些组件不支持,所以不建议修改
~spark-2.1.0$sh ./dev/change-version-to-2.11.sh
(4)修改maven环境变量配置
export MAVEN_OPTS="-Xmx4g -XX:MaxPermSize=1024M -XX:ReservedCodeCacheSize=1024m"
(5)maven编译
~spark-2.1.0$./build/mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.3 -DskipTests clean package
该过程需要很长时间,也可能会出现build failure,多执行几次。
(6)生成安装包
如果不需要hive,则执行
.
/dev/make-distribution
.sh --name
"hadoop2-without-hive"
--tgz
"-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided"
如果需要hive,则执行
./dev/make-distribution.sh --name custom-spark --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn
我的没有要hive,最后编译成功信息如下:
main:
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Spark Project Parent POM ........................... SUCCESS [ 19.393 s]
[INFO] Spark Project Tags ................................. SUCCESS [ 18.437 s]
[INFO] Spark Project Sketch ............................... SUCCESS [ 15.209 s]
[INFO] Spark Project Networking ........................... SUCCESS [ 19.325 s]
[INFO] Spark Project Shuffle Streaming Service ............ SUCCESS [ 12.823 s]
[INFO] Spark Project Unsafe ............................... SUCCESS [ 24.586 s]
[INFO] Spark Project Launcher ............................. SUCCESS [ 23.378 s]
[INFO] Spark Project Core ................................. SUCCESS [31:01 min]
[INFO] Spark Project ML Local Library ..................... SUCCESS [ 39.471 s]
[INFO] Spark Project GraphX ............................... SUCCESS [32:14 min]
[INFO] Spark Project Streaming ............................ SUCCESS [33:25 min]
[INFO] Spark Project Catalyst ............................. SUCCESS [ 01:54 h]
[INFO] Spark Project SQL .................................. SUCCESS [ 04:23 h]
[INFO] Spark Project ML Library ........................... SUCCESS [ 01:08 h]
[INFO] Spark Project Tools ................................ SUCCESS [ 10.568 s]
[INFO] Spark Project Hive ................................. SUCCESS [25:59 min]
[INFO] Spark Project REPL ................................. SUCCESS [18:52 min]
[INFO] Spark Project YARN Shuffle Service ................. SUCCESS [ 42.815 s]
[INFO] Spark Project YARN ................................. SUCCESS [ 01:08 h]
[INFO] Spark Project Assembly ............................. SUCCESS [ 35.475 s]
[INFO] Spark Project External Flume Sink .................. SUCCESS [ 25.452 s]
[INFO] Spark Project External Flume ....................... SUCCESS [27:54 min]
[INFO] Spark Project External Flume Assembly .............. SUCCESS [ 40.121 s]
[INFO] Spark Integration for Kafka 0.8 .................... SUCCESS [10:36 min]
[INFO] Spark Project Examples ............................. SUCCESS [06:14 min]
[INFO] Spark Project External Kafka Assembly .............. SUCCESS [ 34.261 s]
[INFO] Spark Integration for Kafka 0.10 ................... SUCCESS [40:25 min]
[INFO] Spark Integration for Kafka 0.10 Assembly .......... SUCCESS [ 15.937 s]
[INFO] Kafka 0.10 Source for Structured Streaming ......... SUCCESS [18:20 min]
[INFO] Spark Project Java 8 Tests ......................... SUCCESS [02:35 min]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12:49 h
[INFO] Finished at: 2017-04-26T21:07:50+08:00
[INFO] Final Memory: 126M/904M
[INFO] ------------------------------------------------------------------------
可以看到花的时间非常久。编译成功后的安装包是在最早的解压目录下,文件名是spark-2.1.0-bin-hadoop2-without-hive.tgz