Spark 编译

1.编译环境

CentOS6.6  JDK1.7.0_80  Maven3.2.5

2.下载Spark源代码并解压

[[email protected] ~]$ pwd
/home/yyl
[[email protected] make]$ pwd
/home/yyl/make
[[email protected] make]$ wget http://mirrors.cnnic.cn/apache/spark/spark-1.5.0/spark-1.5.0.tgz
[[email protected] make]$ tar -zxf spark-1.5.0.tgz

3.编译

解压后的源码包的根目录下有个 pom.xml 文件,这个文件就是使用 Maven 编译 Spark 的脚步文件。

OK,现在开始编译:

[[email protected] spark-1.5.0]$ pwd
/home/yyl/make/spark-1.5.0
[[email protected] spark-1.5.0]$ export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
[[email protected] spark-1.5.0]$ mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -DskipTests clean package

编译过程中报错:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4:enforce (enforce-versions) on project spark-parent_2.10: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

这个错误有两个解决办法:一是编译时加入 -Denforcer.skip=true 参数;二是修改 pom.xml 文件中 properties 定义的变量的值为实际环境中 maven 、java 的版本

[[email protected] spark-1.5.0]$ vim pom.xml
    <java.version>1.7</java.version>
    <maven.version>3.2.5</maven.version>

解决上面的错误后重新编译,结果又报错:

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Spark Project Parent POM ........................... SUCCESS [  4.619 s]
[INFO] Spark Project Launcher ............................. SUCCESS [ 11.669 s]
[INFO] Spark Project Networking ........................... SUCCESS [ 11.537 s]
[INFO] Spark Project Shuffle Streaming Service ............ SUCCESS [  6.245 s]
[INFO] Spark Project Unsafe ............................... SUCCESS [ 17.217 s]
[INFO] Spark Project Core ................................. SUCCESS [04:15 min]
[INFO] Spark Project Bagel ................................ SUCCESS [ 22.739 s]
[INFO] Spark Project GraphX ............................... SUCCESS [01:09 min]
[INFO] Spark Project Streaming ............................ SUCCESS [02:04 min]
[INFO] Spark Project Catalyst ............................. SUCCESS [02:43 min]
[INFO] Spark Project SQL .................................. SKIPPED
......
---------------------------------------------------
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: scala.reflect.internal.Types$TypeError: bad symbolic reference. A signature in WebUI.class refers to term servlet
in value org.jetty which is not available.
It may be completely missing from the current classpath, or the version on
the classpath might be incompatible with the version used when compiling WebUI.class.
        at scala.reflect.internal.pickling.UnPickler$Scan.toTypeError(UnPickler.scala:847)
        at scala.reflect.internal.pickling.UnPickler$Scan$LazyTypeRef.complete(UnPickler.scala:854)
        at scala.reflect.internal.pickling.UnPickler$Scan$LazyTypeRef.load(UnPickler.scala:863)
        at scala.reflect.internal.Symbols$Symbol.typeParams(Symbols.scala:1489)
......

这是什么原因呢,查看Spark1.5官方编译文档,有这么一句话:
Building Spark using Maven requires Maven 3.3.3 or newer and Java 7+. The Spark build can supply a suitable Maven binary; see below. 果断升级 maven 到3.3.3,再次编译,OK,编译成功!

如果你想要编译兼容 Scala2.11.x 的 Spark,则使用如下命令编译:

[[email protected] spark-1.5.0]$ ./dev/change-scala-version.sh 2.11
[[email protected] spark-1.5.0]$ mvn -Pyarn -Phadoop-2.4 -Dscala-2.11 -DskipTests clean package

编译支持 Hive 和 JDBC 的 Spark

[[email protected] spark-1.5.0]$ mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -Phive -Phive-thriftserver -DskipTests clean package

4. 生成部署包

源码包的根目录下有个 make-distribution.sh 脚本,这个脚本可以打包Spark的发行包,make-distribution.sh 文件其实就是调用了 Maven 进行编译,可以通过下面的命令运行:

[[email protected] spark-1.5.0]$ ./make-distribution.sh --tgz -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -Phive -Phive-thriftserver -DskipTests clean package

make-distribution.sh的语法:./make-distribution.sh [--name] [--tgz] [--mvn <mvn-command>] [--with-tachyon] <maven build options>

--tgz :在根目录下生成 spark-$VERSION-bin.tgz ,不加此参数时不生成 tgz 文件,只生成 /dist 目录

--name NAME :和 tgz 结合可以生成 spark-$VERSION-bin-$NAME.tgz 的部署包,不加此参数时 NAME 为 hadoop 的版本号

--with-tachyon :是否支持内存文件系统 Tachyon ,不加此参数时不支持 tachyon

时间: 2024-10-10 00:27:20

Spark 编译的相关文章

Spark编译与部署

Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建 [注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用一般使用64位操作系统,内容分为三部分:基础环境搭建.Hadoop编译安装和Spark编译安装,该环境作为后续实验基础: 3.文章演示了Hadoop.Spark的编译过程,同时附属资源提供了编译好的安装包,觉得编译费时间可以直接使用这些

Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.编译Spark Spark可以通过SBT和Maven两种方式进行编译,再通过make-distribution.sh脚本生成部署包.SBT编译需要安装git工具,而Maven安装则需要maven工具,两种方式均需要在联网下进行,通过比较发现SBT编译速度较慢(原因有可能是1.时间不一样,SBT是白天编译,Maven是深夜进行的,获取依赖包速度不同 2.maven下载大文件是多线程进行,而SBT是

Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装

[注]该系列文章以及使用到安装包/測试数据 能够在<[倾情大奉送–Spark入门实战系列] (http://blog.csdn.net/yirenboy/article/details/47291765)>获取 1 编译Hadooop 1.1 搭建好开发环境 1.1.1 安装并设置maven 1.下载maven安装包.建议安装3.0以上版本号,本次安装选择的是maven3.0.5的二进制包,下载地址例如以下 http://mirror.bit.edu.cn/apache/maven/maven

spark编译报错信息简介

spark编译需要环境 git java1.7+ maven R 报错信息1: [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 52.661s (W

Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建

[注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用一般使用64位操作系统,内容分为三部分:基础环境搭建.Hadoop编译安装和Spark编译安装,该环境作为后续实验基础: 3.文章演示了Hadoop.Spark的编译过程,同时附属资源提供了编译好的安装包,觉得编译费时间可以直接使用这些编译好的安装包进行部署. 1.运行环境说明 1.1 硬软件环境 l  主机

spark编译时的问题

我本来已经编译部署好了spark环境,可怎奈跑一个简单的wordcount的测试程序时居然程序出现异常就退出了,在网上搜了好久找到如下这篇博文,最后重新编译安装后,一切都正常了~~~~~ 这里我用的是spark1.2    hadoop2.4.1 scala> val rdd1 = sc.textFile("hdfs://master:9001/spark/spark02/directory/")14/07/19 17:09:36 INFO MemoryStore: ensure

spark编译安装及部署

1.下载并编译spark源码 下载spark http://spark.apache.org/downloads.html 我下载的是1.2.0版本 解压并编译,在编译前,可以根据自己机器的环境修改相应的pom.xml配置,我的环境是hadoop2.4.1修改个小版本号即可,编译包括了对hive.yarn.ganglia等的支持 tar xzf ~/source/spark-1.2.0.tgz cd spark-1.2.0 vi pom.xml ./make-distribution.sh --

运维系列:01、Spark编译与打包

1.SBT编译 vi project/SparkBuild.scala 修改仓库: "Maven Repository"     at "http://172.16.219.120:8080/nexus/content/groups/public/" SPARK_HADOOP_VERSION=2.4.0.2.1.2.0-402 SPARK_YARN=true sbt/sbt clean assembly 2.MAVEN编译 export MAVEN_OPTS=&qu

Spark编译安装和运行

一.环境说明 Mac OSX 10.10.3 Java 1.7.0_71 Spark 1.4.0 二.编译安装 tar -zxvf spark-1.4.0.tgz cd spark-1.4.0 ./sbt/sbt assembly ps:如果之前执行过编译,需要执行 ./sbt/sbt clean  清理后才能重新编译. 三.运行 adeMacBook-Pro:spark-1.4.0 apple$ ./bin/spark-shell log4j:WARN No appenders could b