资讯专栏INFORMATION COLUMN

Spark编译

SillyMonkey / 617人阅读

摘要:前提在这里我们编译的是版本为,版本为更多关于编译参见编译官方文档环境要求需要版本,而且在之后已经被标识成了,但是不影响使用,但是在版本之后的支持将会被移除需要版本编译的安装可参考教程安装可参考教程安装可参考教程源码下载下载页面下载

前提

在这里我们编译的是Spark2.2.0,Hadoop版本为hadoop-2.6.0-cdh5.7.0,Scala版本为2.11.8

更多关于编译Spark2.2.0参见Spark编译官方文档

环境要求
The Maven-based build is the build of reference for Apache Spark. Building Spark using Maven requires Maven 3.3.9 or newer and Java 8+. Note that support for Java 7 was removed as of Spark 2.2.0.

Java需要7+版本,而且在Spark2.0.0之后Java 7已经被标识成deprecated了,但是不影响使用,但是在Spark2.2.0版本之后Java 7的支持将会被移除;

Maven需要3.3.9+版本

编译

JDK7+ 的安装 可参考教程

Maven 3.3.9+安装 可参考教程

Scala 安装 可参考教程

spark-2.2.0.tgz 源码下载 下载页面

zinc-0.3.11.tgz:下载页面

最后两个包可不用提前下,如不提供,则在编译时,会通过maven源自动下载下来,不挂VPN会很慢,节约时间可预先下好解压放在源码目录下build文件夹下

编译spark要内存够大

在/etc/profile下加入export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
如果不加入这些参数到MAVEN_OPTS,可能会出现下面的错误

[INFO] Compiling 203 Scala sources and 9 Java sources to /Users/me/Development/spark/core/target/scala-2.11/classes...
[ERROR] Java heap space -> [Help 1]

应为我这里使用的是CDH版的Hadoop所以需要在源码文件夹下的pom.xml中添加如下,位置在 第一个内,不然编译过程报错找不到对应的jar


     cloudera
     https://repository.cloudera.com/artifactory/cloudera-repos/
编译方法 使用build/mvn 来编译

build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0 -DskipTests clean package

(-Pyarn 提供yarn支持 ,—Phadoop-2.6 提供hadoop支持,并且指定hadoop的版本)

用build目录下自带的mvn来部署安装,它可以自动提供部署工程所需要的资源,并把资源下载到build目录下,如果用户提供合适的参数来部署的话,就选择用户的,如果没有提供,那么mvn也可以给他配置默认的参数和资源
编译完成后,你会发现在assembly/build下面多了一个target文件,这个就是编译的结果
用make-distributed 脚本来编译

编译完源代码后,虽然直接用编译后的目录再加以配置就可以运行spark,但是这时目录很庞大,部署起来很不方便,所以需要生成部署包。生成在部署包位于根目录下,文件名类似于spark-[spark版本号]-bin-[Hadoop版本号].tgz

使用命令如下

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

在这里解释下该命令:

--name:指定编译完成后Spark安装包的名字
--tgz:以tgz的方式进行压缩
-Psparkr:编译出来的Spark支持R语言
-Phadoop-2.6:以hadoop-2.6的profile进行编译,具体的profile可以看出源码根目录中的pom.xml中查看
-Phive和-Phive-thriftserver:编译出来的Spark支持对Hive的操作
-Pmesos:编译出来的Spark支持运行在Mesos上
-Pyarn:编译出来的Spark支持运行在YARN上

也可修改dev目录下make-distribution.sh脚本这样速度更快

VERSIONSCALA_VERSIONSPARK_HADOOP_VERSIONSPARK_HIVE 注释掉,直接写上自己的版本

VERSION=2.2.0        #Spark版本
SCALA_VERSION=2.11   #Scala版本(大版本)
SPARK_HADOOP_VERSION=2.6.0-cdh5.7.0 #Hadoop版本
SPARK_HIVE=1         #是否将Hive打包(非1表示不打包)

也可以将默认使用的build目录下自带的mvn修改为自己maven,使用速度快的mirror,这样编译能更快更稳定

编成功后生成的部署包位于根目录下,文件名类似于spark-$spark-version-bin-$Hadoop-version.tgz 即可解压使用了!

参考

Spark编译教程—maven

Spark编译官方文档

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8372.html

相关文章

  • IntelliJ IDEA Windows下Spark开发环境部署

    摘要:运行数据准备随便准备一个文档格式不限,上传到上。解决因为原来是用的版本为相应的依赖包官网已经不再支持,所以更新的平台的环境为,相应的文档很少,更改版本为。星期六星期一由为知笔记迁移到。 0x01 环境说明 博客地址:http://www.cnblogs.com/ning-wang/p/7359977.html 1.1 本地 OS: windows 10jdk: jdk1.8.0_121...

    DevWiki 评论0 收藏0
  • SparkSQL 在有赞的实践

    摘要:在有赞的技术演进。业务数据量正在不断增大,这些任务会影响业务对外服务的承诺。监控需要收集上执行的的审计信息,包括提交者执行的具体,开始结束时间,执行完成状态。还有一点是详细介绍了的原理,实践中设置了的比默认的减少了以上的时间。 前言 有赞数据平台从2017年上半年开始,逐步使用 SparkSQL 替代 Hive 执行离线任务,目前 SparkSQL 每天的运行作业数量5000个,占离线...

    hzx 评论0 收藏0
  • SparkSQL 在有赞的实践

    摘要:在有赞的技术演进。业务数据量正在不断增大,这些任务会影响业务对外服务的承诺。监控需要收集上执行的的审计信息,包括提交者执行的具体,开始结束时间,执行完成状态。还有一点是详细介绍了的原理,实践中设置了的比默认的减少了以上的时间。 前言 有赞数据平台从2017年上半年开始,逐步使用 SparkSQL 替代 Hive 执行离线任务,目前 SparkSQL 每天的运行作业数量5000个,占离线...

    Xufc 评论0 收藏0
  • Spark History Server配置

    摘要:本文是对于自己编译的部署,如果是集成的则可直接在管理界面中查看。在中创建一个目录,用于保存运行日志信息。配置,使从此目录中读取日志信息其中保存日志相关信息的路径,可以是开头的路径,也可以是开头的本地路径,都需要提前创建。 本文是对于自己编译的Spark部署,如果是CDH集成的Spark则可直接在管理界面中查看。 1.在hdfs中创建一个目录,用于保存Spark运行日志信息。 ]$ hd...

    wfc_666 评论0 收藏0
  • DCOS应用案例-不同场景的应用上云迁移

    摘要:极大地降低了平台的复杂度,更加方便企业开发人员实现各种业务应用,帮助企业轻松打造基于云计算的软件基础设施。本文将从实际案例出发,结合不同的使用场景,为各位介绍的这些特性。是未来数据中心操作系统的核心。 0.前言 随着 Docker 技术的日渐火热,本就火爆的云计算行业进入了一个加速阶段。云计算最大的特点是弹性和灵活,帮助企业应对复杂的业务需求。由于云计算的IT构架和上一代的IT构架有很...

    Scorpion 评论0 收藏0

发表评论

0条评论

SillyMonkey

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<