maven编译spark 源码

基于Maven的构建是Apache Spark的参考构建。使用Maven构建Spark需要Maven 3.3.9或更高版本和Java 7。请注意,对于Java 7的支持已从Spark 2.0.0中弃用,可能会在Spark 2.2.0中删除。


设置Maven内存使用:

您需要通过MAVEN_OPTS配置Maven的内存使用量,官方推荐配置如下:

export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512M"

当使用Java 7编译时,需要将附加选项“-XX:MaxPermSize = 512M”添加到MAVEN_OPTS,您不做如上设置,很可能会出现如下编译错误:

[INFO] Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.10/classes...
[ERROR] PermGen space -> [Help 1]

[INFO] Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.10/classes...
[ERROR] Java heap space -> [Help 1]

您可以通过如前所述设置MAVEN_OPTS变量来修复这些问题

注:1、如果您已配置MAVEN_OPTS,但仍然出现如上错误,可以尝试调整MAVEN_OPTS里的-XX:MaxPermSize来解决;

   2、Java8或以上版本不需要做如上设置;

   3、如果使用build/mvn编译,则不需要设置MAVEN_OPTS,mvn脚本已经帮我们设置该值;


build/mvn

Spark现在包含了一个自包含的Maven安装,以方便从位于build /目录下的源代码构建和部署Spark。此脚本将自动下载并在build /目录本地内部设置所有必需的构建需求(Maven,Scala和Zinc)。它尊重任何mvn二进制如果已经存在, 将拉下自己的Scala和Zinc副本,而不管是否满足正确的版本要求 。 build / mvn执行作为一个传递到mvn调用允许从以前的构建方法容易转换。例如,可以如下构建Spark的版本:


./build/mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -DskipTests clean package
其他构建示例可以在下面找到。


下载可以运行版本

http://Spark.apache.org/downloads.html


Hadoop版本指定:

因为HDFS不是跨版本的协议兼容,如果你想从HDFS读取,你需要在你的环境中的特定HDFS版本上构建Spark。你可以通过hadoop.version属性来做到这一点。如果取消设置,Spark将默认针对Hadoop 2.2.0进行构建。注意,特定Hadoop版本需要某些构建配置文件:

Hadoop version Profile required
2.2.x hadoop-2.2
2.3.x hadoop-2.3
2.4.x hadoop-2.4
2.6.x hadoop-2.6
2.7.x and later 2.x hadoop-2.7

  请注意,对于2.6之前的Hadoop版本的支持已从Spark 2.1.0中弃用,可能会在Spark 2.2.0中删除。您可以启用yarn.version配置文件,如果不同于hadoop.version,可以选择设置yarn.version属性。 Spark只支持YARN版本2.2.0和更高版本。


   Spark仅支持YARN2.2.0及以上版本:

# Apache Hadoop 2.2.X
mvn -Pyarn -Phadoop-2.2 -DskipTests clean package

# Apache Hadoop 2.3.X
mvn -Pyarn -Phadoop-2.3 -Dhadoop.version=2.3.0 -DskipTests clean package

# Apache Hadoop 2.4.X or 2.5.X
mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=VERSION -DskipTests clean package

Versions of Hadoop after 2.5.X may or may not work with the -Phadoop-2.4 profile (they were
released after this version of Spark).

# Different versions of HDFS and YARN.
mvn -Pyarn -Phadoop-2.3 -Dhadoop.version=2.3.0 -Dyarn.version=2.2.0 -DskipTests clean package

支持Hive和JDBC

  要为Spark SQL及其JDBC服务器和CLI启用Hive集成,请将-Phive和Phive-thriftserver配置文件添加到现有构建选项中。默认情况下Spark将使用Hive 1.2.1绑定进行构建

# Apache Hadoop 2.4.X with Hive 13 support
mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -Phive -Phive-thriftserver -DskipTests clean package


没有针对YARN的Hadoop依赖性的包装

默认情况下,由mvn package生成的汇编目录将包括所有Spark的依赖项,包括Hadoop及其一些生态系统项目。在YARN部署中,这会导致多个版本出现在执行程序类路径上:Spark程序集中打包的版本和每个节点上的版本,包含在yarn.application.classpath中。 hadoop提供的配置文件构建了程序集,不包括Hadoop生态系统项目,如ZooKeeper和Hadoop本身。


构建使用Mesos支持

./build/mvn -Pmesos -DskipTests clean package

构建Scala支持

./dev/change-scala-version.sh 2.10
./build/mvn -Pyarn -Phadoop-2.4 -Dscala-2.10 -DskipTests clean package

单独构建子模块


可以使用mvn -pl选项来构建Spark子模块。例如,您可以使用以下命令构建Spark Streaming模块:

./build/mvn -pl :spark-streaming_2.11 clean install
连续编译

我们使用scala-maven插件,它支持增量和连续编译。例如

./build/mvn scala:cc
应运行连续编译(即等待更改)。然而,这没有被广泛测试。注意几个问题:它只扫描路径src / main和src / test(参见docs),因此它只能在具有该结构的某些子模块中工作。您通常需要从项目根目录运行mvn install,以便在特定子模块中进行编译;这是因为依赖于其他子模块的子模块通过spark-parent模块这样做)。


因此,用于运行核心子模块的连续编译的全流程可能看起来更像:

$ ./build/mvn install
$ cd core
$ ../build/mvn scala:cc

1. Spark-2.x编译

a. note:提高Maven编译时的堆内存大小,防止编译过程中产生OOM异常,相关命令如下:
  export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
b. 编译
   cd $SPARK_HOME(spark源码路径)
   mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -Phadoop-provided -Phive -Phive-thriftserver -Pnetlib-lgpl -DskipTests clean package

2. Spark-2.x构建(Distribution)

a. 编译成功后,构建spark执行环境,(note:spark-2.0.0和spark-2.0.1的稍微有不同),执行命令如下:

spark-2.0.0

./dev/make-distribution.sh --name dev --tgz -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.3 -Phadoop-provided -Phive -Phive-thriftserver -Pnetlib-lgpl

spark-2.0.1

./dev/make-distribution.sh --name custom-spark --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pyarn
b.构建成功,运行环境成生成在$SPARK_HOME/dist目录下
c.重命名( mv $SPARK_HOME/dist mv $SPARK_HOME/spark-2.x.x-bin),则$SPARK_HOME/spark-2.x.x-bin 则作为发布版本

最终使用的编译代码:mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.3 -Dscala-2.12.2 -Phive -Phive-thriftserver -DskipTests clean package

生成最终的tar.gz:make-distribution.sh --tgz --name 2.7.3 -Pyarn -Phadoop-2.7 -Pspark-ganglia-lgpl -Phive -Phive-thriftserver --r


原文:http://spark.apache.org/docs/latest/building-spark.html


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值