Apache Spark - Building Spark with Maven(使用Maven构建Spark)

来源:互联网 发布:mcmc算法 编辑:程序博客网 时间:2024/04/28 16:13

使用Maven构建Spark

  • Setting up Maven’s Memory Usage
  • Specifying the Hadoop version
  • Spark Tests in Maven
  • Continuous Compilation
  • Using With IntelliJ IDEA
  • Building Spark Debian Packages

使用Maven构建Spark需要Maven 3 (构建过程在Maven 3.0.4中已测试) 和 Java 1.6 (以及更高版本).

设置Maven的内存使用

通过设置 MAVEN_OPTS 变量,你可以设置Maven比平时使用更多的内存. 我们推荐如下设置:

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

如果运行失败, 你可能看到如下错误信息:

[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 变量.

指定Hadoop版本

由于 HDFS 在不同版本间并不是协议兼容的, 如果打算从HDFS读取数据, 你需要针对环境中不同版本的HDFS构建Spark. 通过指定 “hadoop.version” 属性可以完成这点. 如果没有设置, Spark 默认基于 Hadoop 1.0.4 构建.

对于 Apache Hadoop 1.x, Cloudera CDH MRv1, 以及其他的不支持 YARN的 Hadoop 版本, 使用:

# Apache Hadoop 1.2.1$ mvn -Dhadoop.version=1.2.1 -DskipTests clean package# Cloudera CDH 4.2.0 with MapReduce v1$ mvn -Dhadoop.version=2.0.0-mr1-cdh4.2.0 -DskipTests clean package

对于 Apache Hadoop 2.x, 0.23.x, Cloudera CDH MRv2,  以及其他的支持 YARN的 Hadoop 版本. 可以激活 “yarn-alpha” 或者 “yarn” 属性,并且设置 “hadoop.version”, “yarn.version” 属性:

# Apache Hadoop 2.0.5-alpha$ mvn -Pyarn-alpha -Dhadoop.version=2.0.5-alpha -Dyarn.version=2.0.5-alpha -DskipTests clean package# Cloudera CDH 4.2.0 with MapReduce v2$ mvn -Pyarn-alpha -Dhadoop.version=2.0.0-cdh4.2.0 -Dyarn.version=2.0.0-chd4.2.0 -DskipTests clean package# Apache Hadoop 2.2.X ( e.g. 2.2.0 as below ) and newer$ mvn -Pyarn -Dhadoop.version=2.2.0 -Dyarn.version=2.2.0 -DskipTests clean package

Maven测试Spark

测试默认使用 ScalaTest Maven plugin. 部分Spark功能需要打包运行,请首先运行 mvn package 带 -DskipTests. 然后运行测试:

 mvn -Dhadoop.version=... test.

ScalaTest plugin 同时支持只运行一个特殊测试集, 如下:

$ mvn -Dhadoop.version=... -Dsuites=spark.repl.ReplSuite test

即时编译

使用 scala-maven-plugin 支持增量即时编译. E.g.

$ mvn scala:cc

可以启用即时编译 (i.e. 响应变化). 但是, 这个功能没有广泛的测试.

协同使用 IntelliJ IDEA

安装环境最好是 IntelliJ IDEA 11.1.4. 通过项目根目录下的 pom.xml 文件打开项目之后, 仅需在“Maven Properties”激活 hadoop1 或者 hadoop2 属性即可. 我们没有在 Eclipse/Scala IDE这样尝试过 .

构建 Spark Debian 包

Maven 构建支持构建包含组件 ‘fat-jar’, PySpark, 以及必须的scripts 的 configuration 文件的Debian包. 如下指定即可:

$ mvn -Pdeb -DskipTests clean package

Debian 包将会构建到 assembly/target. 我们对文件名加入一个短 hash码  以辨别不同 SNAPSHOT 版本的构建包.

0 0
原创粉丝点击