Spark2.2.0源码构建阅读

源码下载

源码获取有两种渠道:一种是通过Spark官网直接下载,第二种是通过github直接将spark的代码clone下来。
官网地址:https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0.tgz
github地址:https://github.com/apache/spark/tree/branch-2.2
解压后目录:

Spark2.2.0源码构建阅读_第1张图片
解压目录

源码编译

工具 版本
maven 3.3.9+
jdk 8+

设置maven内存


export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"

如果不调大maven内存,有可能会报:

[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]

Maven源码编译

自动化构建

在源码build目录下面有一个maven的独立安装脚本,这样能够帮助你轻松构建源码,这个脚本会自动下载和安装所有必须的构建要求。


./build/mvn -DskipTests clean package

指定Hadoop版本

可以通过hadoop.version指定Hadoop版本,如果未设置则采用默认的2.6.x版本,如果yarn的版本与Hadoop不一致,可以使用yarn.version来指定版本。


./build/mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.3 -DskipTests clean package

Hive和JDBC支持

Hive默认版本是1.2.1

With Hive 1.2.1 support

./build/mvn -Pyarn -Phive -Phive-thriftserver -DskipTests clean package

使用Mesos

如果使用Mesos作为资源管理容器,可以指定mesos:


./build/mvn -Pmesos -DskipTests clean package

单独构建子模块

如果想要单独构建子模块,可以是使用maven的-pl参数。spark-streaming_2.11是其maven坐标的artifactId,定义在streaming/pom.xml中。


./build/mvn -pl :spark-streaming_2.11 clean install

SBT源码编译

官方推荐打包使用maven来构建,但因为SBT支持日常的开发,所以它能够更快速的迭代编译。


./build/sbt package

编译完成

Spark2.2.0源码构建阅读_第2张图片
源码编译

IDEA导入源码

Rebuild Project

打开idea后,open之前刚才编译好的目录,需要做一些额外的操作,否则Rebuild Project会失败。

1、点击File→Project Structure->Model->spark-streaming-flume-sink_2.11,右键target目录取消Exclude。

Spark2.2.0源码构建阅读_第3张图片
target取消Exclude

2、当前target->scala-2.11->src_managed->main→compiled_avro右键标记为Source目录。
3、Build->Rebuild Project 项目即可

环境配置

Spark的配置都在conf目录下面,可以将spark-env.sh.template复制一份spark-env.sh,进行相应的配置(直接运行可skip)。

Spark运行

sbin/start-master.sh
sbin/start-slave.sh spark://{localhost}为你主机,如果不知道可以查看master的打印日志,会将其打印出来。
检查WebUI:http://localhost:8080/

Spark2.2.0源码构建阅读_第4张图片
webUI

运行作业:bin/run-example SparkPi
Pi is roughly 3.1471357356786784
ok搭建完成

关注我

欢迎关注我的公众号,会定期推送优质技术文章,让我们一起进步、一起成长!
公众号搜索:data_tc
或直接扫码:


Spark2.2.0源码构建阅读_第5张图片
欢迎关注我

你可能感兴趣的:(Spark2.2.0源码构建阅读)