使用maven编译spark源码

本文详细介绍了如何使用maven编译Spark-1.6.0源码。从下载源码、安装maven、修改源码到编译配置、解决编译问题,直至最终打包部署,每个步骤都有清晰说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己编译spark是修改spark源码的必备条件,修改的源码自定义打包生效后才能发布到生产环境中。

现在详细介绍使用maven编译Spark-1.6.0的过程


1、下载Spark-1.6.0的源码

http://spark.apache.org/downloads.html



解压源码

cd  /opt/spark-1.6.0.tgz

tar  -xzvf  spark-1.6.0.tgz


2、安装maven工具

官网一般推荐使用sbt, sbt比较适合于编译scala的工程,maven一般适合于java的工程。但是,sbt的源经常访问不到。

maven的源基本国内都能访问。

1)下载地址:http://maven.apache.org/download.cgi



2)解压安装包

tar  -xzvf  apache-maven-3.3.9-bin.tar.gz


3)设置环境变量,根据自己安装的路径来配置

vim  /etc/profile

在文件最后一行增加以下内容:

export  MAVEN_HOME=/opt/apache-maven-3.3.9

export  PATH=$PATH:$MAVEN_HOME/bin

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


4)使配置文件生效:source  /etc/profile 


5)验证maven是否安装成功: mvn   -v

出现下述信息,表示安装成功



3、编译Spark-1.6.0

1)编译前,修改源码的一些地方

 /** Print a welcome message */
  override def printWelcome() {
    import org.apache.spark.SPARK_VERSION
    echo("""Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version %s 
      /_/
         """.format(SPARK_VERSION))


修改的地方:

vim   /opt/spark-1.6.0-mvn/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala

Line:100

vim   /opt/spark-1.6.0-mvn/repl/scala-2.10/src/main/scala/org/apache/spark/repl/SparkILoopInit.scala

Line:27

vim   /opt/spark-1.6.0-mvn/repl/scala-2.11/src/main/scala/org/apache/spark/repl/SparkILoop.scala

Line:63

把这三个路径下的启动scala文件的提示修改了,上述的 version %s 改成 version %s complied by wl 20161216


2)maven编译spark源码

cd    /opt/spark-1.6.0-mvn/

mvn  -Pyarn  -Phadoop-2.4  -Dhadoop.version=2.4.0  -DskipTests  clean  package

由于spark是基于HDFS的,而不同版本的HDFS协议是不兼容的,所以要指定Hadoop的版本,这里选择的是2.4.0版本。


编译过程会出现一些错误,可以修改/opt/spark-1.6.0-mvn/pom.xml

在插件plugins部分增加以下内容:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-remote-resources-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <goals>
                <goal>bundle</goal>
            </goals>
        </execution>
    </executions>
</plugin>


<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <archive>
          <manifest>
            <mainClass>com.test.MainClassName</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase> <!-- packaging phase -->
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>



3)经过maven编译好的spark源码,通过环境配置,即可使用。

环境变量配置: vim   /etc/profile

在文件最后一行添加内容:export  SPARK_HOME=/opt/spark-1.6.0-mvn/

让配置文件生效:source   /etc/profile

运行spark

cd     /opt/spark-1.6.0-mvn/bin

./spark-shell


生成的版本位于 /opt/spark-1.6.0/assembly/target/scala-2.10目录下:

spark-assembly-1.6.0-hadoop2.4.0.jar



4)但是由于其比较大,因此部署比较困难,所以可以通过打包,将spark源码打包部署。

进入源码目录,执行打包命令

cd   /opt/spark-1.6.0-mvn

./make-distribution.sh --tgz -Phadoop-2.4 -Pyarn -DskipTests -Dhadoop.version=2.4.0 -Phive -Phive-thriftserver

基于hadoop2.4的打包编译,并增加了hive的支持,然后就是漫长的等待。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值