您的位置:首页 > 其它

Spark -4:maven编译spark 源码

2017-01-19 12:10 281 查看
基于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 versionProfile required
2.2.xhadoop-2.2
2.3.xhadoop-2.3
2.4.xhadoop-2.4
2.6.xhadoop-2.6
2.7.x and later 2.xhadoop-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


原文:http://spark.apache.org/docs/latest/building-spark.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: