Spark 源码编译

分享 蔡晓雨 ⋅ 于 2016-12-14 11:42:14 ⋅ 最后回复由 zhenzihan 2017-11-03 16:56:56 ⋅ 4204 阅读

准备环境

  • JDK(1.6+)
  • Maven
  • Scala 版本:要对应,当前Spark的Scala版本为2.11.8
    下载地址:http://www.scala-lang.org/download/2.10.4.html
  • 下载Spark源码:http://archive.cloudera.com/cdh5/cdh/5/
  • 修改hadoop版本
    <hadoop.version>2.2.0</hadoop.version>=><hadoop.version>2.6.0-cdh5.9.0</hadoop.version>
    <profile>
    <id>hadoop-2.6.0-cdh5.9.0</id>
    <properties>
    <hadoop.version>2.6.0-cdh5.9.0</hadoop.version>
    <jets3t.version>0.9.3</jets3t.version>
    <zookeeper.version>3.4.6</zookeeper.version>
    <curator.version>2.6.0</curator.version>
    </properties>
    </profile>

开始编译

mvn -Pyarn -Phive -Phive-thriftserver -Phadoop-2.6.0-cdh5.9.0 -Dhadoop.version=2.6.0-cdh5.9.0 -DskipTests clean package
dev/make-distribution.sh --name zdp --tgz -Phadoop-2.6.0-cdh5.9.0 -Dhadoop.version=2.6.0-cdh5.9.0 -Phive -Phive-thriftserver -Pyarn

生成spark部署包

编译完源代码后,虽然直接用编译后的目录再加以配置就可以运行spark,但是这时目录很庞大,又3G多吧,部署起来很不方便,所以需要生成部署包。
spark源码根目录下带有一个脚本文件make-distribution.sh可以生成部署包

./make-distribution.sh --with-tachyon --tgz

生成在部署包位于根目录下,文件名类似于spark-1.2.0-cdh5.3.2-bin-2.5.0-cdh5.3.2.tgz。
值得注意的是:make-distribution.sh已经带有Maven编译过程,所以不需要先编译再打包。

可能遇到的问题:

1:找不到包com.google.common
描述:在编译Spark Project External Kafka时可能会遇到

[ERROR] bad symbolic reference. A signature in Utils.class refers to term util
in package com.google.common 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 Utils.class.

解决办法:在spark-parent的pom.xml中加入依赖

<dependency>
 <groupId>com.google.guava</groupId>
 <artifactId>guava</artifactId>
 <version>18.0</version>
</dependency>

2:Unable to find configuration file at location scalastyle-config.xml
解决办法:将根目录下的scalastyle-config.xml拷贝到examples目录下去,这是因为pom.xml中定义的是scalastyle-maven-plugin插件从maven运行的当前目录查找该文件
3:OutOfMemoryError

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

4:./make-distribution.sh: line 173: cho: command not found
此时mvn命令已经执行成功,可以把这条命令注掉

  1. Required file not found: scala-compiler-2.10.4.jar
    Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile (scala-compile-first) on project spark-launcher_2.10: Execution scala-compile-first of goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile failed. CompileFailed.

    解决方法:Shutdown zinc first

    ./build/zinc-<version>/bin/zinc -shutdown

    连接:http://stackoverflow.com/questions/32659704/building-spark-with-mvn-fails

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海牛部落-蔡晓雨,http://hainiubl.com/topics/18
回复数量: 2
暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter