spark编译

作者: 风起云端 | 来源:发表于2018-07-26 22:27 被阅读0次

背景

  通常来讲,spark的使用离不开hadoop生态,在spark的官网中已经有针对hadoop通用版本(比如2.6、2.7)的预编译版本。但是在实际生产环境中使用的hadoop一般是cdh或hdp,与spark预编译版本可能会有兼容性的问题,所以要编译针对特定hadoop版本的spark。

版本

  • hadoop:2.6.0-cdh5.4.7
  • spark:2.3.1

maven 编译

前提条件

1.maven版本在3.3.9以上并且jdk在1.8以上
2.设置MAVEN_OPTS,以便在编译时可以用更多的内存空间

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

了解pom文件

在编译之前我们首先了解一下spark源码中的pom文件,首先在<properties/>中提供了编译spark时各组件的默认版本:

如图所示,编译spark时默认的hadoop版本是2.6.5,编译时可以通过-D的方式指定组件版本。

其次,在<profiles/>中提供了编译时的可选项: 比如编译的spark要支持yarn,可以在编译时用-Pyarn来指定。

编译

mvn -Pyarn -Phive -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.4.7  -Phive-thriftserver -DskipTests clean package

上述命令编译的spark支持yarn、hive、hadoop2.6,同时指定了hadoop的版本。

编译可运行的spark包

在spark的源码的dev目录下提供了一个名叫make-distribution.sh的脚本来编译一个可运行的spark包,具体用法如下:

./dev/make-distribution.sh --name 2.6.0-cdh5.4.7 --tgz -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn -Dhadoop.version=2.6.0-cdh5.4.7

该脚本实际用的是上面介绍的mvn编译,具体用法可以通过执行./dev/make-distribution.sh --help来查看。

在执行该脚本时要指定--name,它是编译后包名的一部分:

编译时遇到的问题

问题一:

[ERROR] Failed to execute goal on project spark-launcher_2.11: Could not resolve dependencies for project org.apache.spark:spark-launcher_2.11:jar:2.3.1: Could not find artifact org.apache.hadoop:hadoop-client:jar:2.6.0-cdh5.4.7 in central (https://repo.maven.apache.org/maven2) -> [Help 1]

解决:这是由于编译时找不到hadoop对应的maven库,只要在spark的pom文件中加入cdh的maven仓库即可

<repositories>
    <repository>
      <id>cloudera</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
</repositories>

相关文章

  • Spark Streaming实时流处理-2. Spark实战环

    0. 目录 Spark源码编译 Spark环境搭建 Spark简单使用 1. Spark源码编译 http://s...

  • Spark On Hive 部署和配置

    Spark On Hive,通过spark sql模块访问和使用Hive,默认Spark预编译(pre-built...

  • Spark3源码在IDEA中的编译

    Spark3源码编译 之前可以在linux环境进行spark源码的修改和编译,没有在笔记本上走通过编译流程,今天使...

  • 源码编译搭建Spark3.x环境

    Spark源码编译 官方文档: https://spark.apache.org/docs/latest/buil...

  • 编译Spark源码支持Hive并部署

    1、Spark源码下载 Spark官网提供了预编译版本的Spark,但是要获得hive支持的Spark版本必须自己...

  • Spark 编译

    选择的最新版的Spark,目前是2.3.0。编译Spark源码,使用自己安装的maven进行编译,其中-T参数是设...

  • 【Spark】Spark 编译调试

    自动补全CLASSPATH 参数:export SPARK_PREPEND_CLASSES=1在编译完Spark源...

  • spark编译

    背景   通常来讲,spark的使用离不开hadoop生态,在spark的官网中已经有针对hadoop通用版本(比...

  • Spark编译

    一、所需环境 1、CentOS 6.52、jdk1.8.0_4.53、maven 3.3.94、scala 2.1...

  • Spark编译

    Spark编译有三种方式:SBT(Simple Build Tool),Maven,Make-distribut...

网友评论

    本文标题:spark编译

    本文链接:https://www.haomeiwen.com/subject/llommftx.html