编译CDH Spark源代码

简介:

本文以Cloudera维护的Spark分支项目为例,记录跟新Spark分支以及编译Spark源代码的过程。

下载代码

在Github上fork Cloudera维护的Spark项目到自己的github账号里,对应的地址为https://github.com/javachen/spark

下载代码:

$ git clone https://github.com/javachen/spark

然后,切换到最新的分支,当前为 cdh5-1.3.0_5.4.0。

$ cd spark
$ git checkout cdh5-1.3.0_5.4.0

查看当前分支:

⇒  git branch
* cdh5-1.3.0_5.4.0
  master

如果spark发布了新的版本,需要同步到我自己维护的spark项目中,可以按以下步骤进行操作:

# 添加远程仓库地址
$ git remote add cdh git@github.com:cloudera/spark.git

# 抓取远程仓库更新:
$ git fetch cdh

# 假设cloudera发布了新的版本 cdh/cdh5-1.3.0_5.4.X
$ git checkout -b cdh5-1.3.0_5.4.X cdh/cdh5-1.3.0_5.4.X

# 切换到新下载的分支 
$ git checkout cdh5-1.3.0_5.4.X

# 将其提交到自己的远程仓库:
$ git push origin cdh5-1.3.0_5.4.X:cdh5-1.3.0_5.4.X

编译

安装 zinc

在mac上安装zinc

$ brew install zinc

使用maven编译

指定hadoop版本为2.6.0-cdh5.4.0,并集成yarn和hive:

$ export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
$ mvn -Pyarn -Dhadoop.version=2.6.0-cdh5.4.0 -Phive -DskipTests clean package

在CDH的spark中,要想集成hive-thriftserver进行编译,需要修改 pom.xml 文件,添加一行 sql/hive-thriftserver:

<modules>
    <module>core</module>
    <module>bagel</module>
    <module>graphx</module>
    <module>mllib</module>
    <module>tools</module>
    <module>streaming</module>
    <module>sql/catalyst</module>
    <module>sql/core</module>
    <module>sql/hive</module>
    <module>sql/hive-thriftserver</module> <!--添加的一行-->
    <module>repl</module>
    <module>assembly</module>
    <module>external/twitter</module>
    <module>external/kafka</module>
    <module>external/flume</module>
    <module>external/flume-sink</module>
    <module>external/zeromq</module>
    <module>external/mqtt</module>
    <module>examples</module>
  </modules>

然后,再执行:

$ export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
$ mvn -Pyarn -Dhadoop.version=2.6.0-cdh5.4.0 -Phive -Phive-thriftserver -DskipTests clean package

运行测试用例:

$ mvn -Pyarn -Dhadoop.version=2.6.0-cdh5.4.0 -Phive  test

运行java8测试:

$ mvn install -DskipTests -Pjava8-tests

使用sbt编译

$ build/sbt -Pyarn -Dhadoop.version=2.6.0-cdh5.4.0 -Phive assembly

生成压缩包

$ ./make-distribution.sh

排错

  1. Unable to find configuration file at location scalastyle-config.xml 异常

在idea中使用maven对examples模块运行package或者install命令会出现 Unable to find configuration file at location scalastyle-config.xml异常,解决办法是将根目录下的scalastyle-config.xml拷贝到examples目录下去,这是因为pom.xml中定义的是scalastyle-maven-plugin插件从maven运行的当前目录查找该文件。

<plugin>
    <groupId>org.scalastyle</groupId>
    <artifactId>scalastyle-maven-plugin</artifactId>
    <version>0.4.0</version>
    <configuration>
      <verbose>false</verbose>
      <failOnViolation>true</failOnViolation>
      <includeTestSourceDirectory>false</includeTestSourceDirectory>
      <failOnWarning>false</failOnWarning>
      <sourceDirectory>${basedir}/src/main/scala</sourceDirectory>
      <testSourceDirectory>${basedir}/src/test/scala</testSourceDirectory>
      <configLocation>scalastyle-config.xml</configLocation>
      <outputFile>scalastyle-output.xml</outputFile>
      <outputEncoding>UTF-8</outputEncoding>
    </configuration>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>check</goal>
        </goals>
      </execution>
    </executions>
</plugin>
目录
相关文章
|
1月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
18 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
6月前
|
分布式计算 Java Scala
Spark-Adaptive编译和打包
Spark-Adaptive编译和打包
34 0
Spark-Adaptive编译和打包
|
6月前
|
分布式计算 Java Hadoop
Spark3.3.0源码编译补充篇-抓狂的证书问题
Spark3.3.0源码编译补充篇-抓狂的证书问题
42 0
|
6月前
|
分布式计算 安全 Java
Spark 编译出现 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Spark 编译出现 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
167 0
|
SQL 分布式计算 对象存储
客户说|科脉 x AnalyticDB,Serverless Spark替换CDH助力运维降本80%
使用AnalyticDB Spark替换自建CDHSpark,助力科脉降本增效
|
分布式计算 算法 搜索推荐
Java编写的Spark ALS协同过滤推荐算法的源代码能共享一下
Java编写的Spark ALS协同过滤推荐算法的源代码能共享一下
115 0
|
分布式计算 Hadoop Java
spark编译:构建基于hadoop的spark安装包及遇到问题总结
spark编译:构建基于hadoop的spark安装包及遇到问题总结
360 0
spark编译:构建基于hadoop的spark安装包及遇到问题总结
|
分布式计算 Java Hadoop
Spark3.2.1源码编译(傻瓜式图文教学)
Spark3.2.1源码编译(傻瓜式图文教学)
508 0
Spark3.2.1源码编译(傻瓜式图文教学)
|
SQL 分布式计算 Java
spark入门(2.0.1版本):概述,下载,编译,运行环境及实例运行
spark入门(2.0.1版本):概述,下载,编译,运行环境及实例运行
183 0
HIVE3 兼容spark3.XX,编译过程
HIVE3 兼容spark3.XX,编译过程
335 0
HIVE3 兼容spark3.XX,编译过程