maven编译Spark源码

环境说明:

Spark 1.5.2,Maven 3.3.3或以上版本,Java7或以上版本。

一、设置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]
注:1、如果您已配置 MAVEN_OPTS,但仍然出现如上错误,可以尝试调整MAVEN_OPTS里的-XX:MaxPermSize来解决;

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

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


二、Hadoop版本指定:

因为HDFS不能跨版本兼容,所以如果你需要从HDFS中读取数据,你将需要在编译Spark源码时指定你HDFS的版本,你可以通过hadoop.version属性进行配置;如果你不设置该参数,Spark编译时默认指定Hadoop版本为2.2.0;请注意,可构建的Hadoop有如下版本:

Hadoop version Profile required
1.x to 2.1.x hadoop-1
2.2.x hadoop-2.2
2.3.x hadoop-2.3
2.4.x hadoop-2.4
2.6.x and later 2.x hadoop-2.6
   对于Hadoop1.X,Cloudera CDH "mr1"及其它不包含YARN的Hadoop版本,如下:

# Apache Hadoop 1.2.1
mvn -Dhadoop.version=1.2.1 -Phadoop-1 -DskipTests clean package

# Cloudera CDH 4.2.0 with MapReduce v1
mvn -Dhadoop.version=2.0.0-mr1-cdh4.2.0 -Phadoop-1 -DskipTests clean package
   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:

    对SparkSQL启用Hive、JDBC及CLI(命令行)支持, 构建时需要指定-Phive和-Phive-thriftserver两个编译参数,Spark默认支持Hive版本为0.13.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

四、改变Scala版本:

   编译Spark源码包时,可以指定Scala版本,如使用Scala 2.11构建Spark,我们可以采用-Dscala-2.11参数设定:

./dev/change-scala-version.sh 2.11
mvn -Pyarn -Phadoop-2.4 -Dscala-2.11 -DskipTests clean package
  注:Spark JDBC组建暂时不支持Scala 2.11。



你可能感兴趣的:(maven,spark,大数据,编译)