Spark源码编译

源码编译前的准备工作

  1. 安装jdk:(安装前需要卸载Linux自带的OpenJdk)

    1. 下载jdk并解压到相应安装目录(如:/usr/install/jdk1.8)

    2. 修改/etc/profile文件,用vim编辑器打开/etc/profile文件,并在文件末尾追加以下内容:

      export JAVA_HOME=/usr/install/jdk1.8

      export PATH=$PATH:$JAVA_HOME/bin

    3. 执行source /etc/profile命令或者重启机器,使修改生效

    4. 验证JDK是否安装成功(终端中执行:java -version命令)

  2. 安装scala(安装过程与JDK安装类似,不同的地方在于修改/etc/profile文件)

    export SCALA_HOME=/usr/install/scala2.11

    export PATH=$PATH:$SCALA_HOME/bin

  3. 安装maven工具(安装过程与JDK安装类似,不同的地方在于修改/etc/profile文件)

    export M2_HOME=/usr/install/scala2.11

    export PATH=$PATH:$M2_HOME/bin

  4. 安装git(本文只是简单使用git的命令克隆代码,并未将git作为代码仓库使用,因此没有进行配置用户、邮箱等操作)

    yum –y install git

  5. 下载源码包

    git clone -b v2.3.0 https://github.com/apache/spark.git

    注意:其中-b表示分支,v2.3.0表示版本号,如果下载最新版本源码只需要执行

    git clone https://github.com/apache/spark.git即可。

源码编译

  1. maven方式编译

    1. 设置maven参数,避免maven内存不足OOM,导致编译失败

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

      (Windows系统: set MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"

    2. 执行编译命令:mvn -T 4 -DskipTests clean package

  2. make-distribution方式编译

    maven方式只能对源码进行简单编译,如果需要编译可以部署到服务器上的Spark安装包,则需要使用Spark官方提供的编译脚本make-distribution.sh进行编译,该文件位于dev目录下。在编译之前需要做如下准备工作:

    1. 更正脚本错误

      找到“tar czf "spark-$VERSION-bin-$NAME.tgz" -C "$SPARK_HOME" "$TARDIR_NAME"”,将其修改为

      tar -czf "spark-$VERSION-bin-$NAME.tgz" -C "$SPARK_HOME" "$TARDIR_NAME"

    2. 修改make-distribution.sh文件

      找到如下图中所示代码块,并将其注释,接着在注释后边添加如下内容:

      添加内容:

      VERSION=2.3.0#Spark源码版本号

      SCALA_VERSION=2.11#编译使用的scala版本号

      SPARK_HADOOP_VERSION=2.7.3#hadoop版本

      SPARK_HIVE=1#支持hive,0表示不支持hive

    3. 修改pom.xml文件

       

      1. 修改<useZincServer>true</useZincServer><useZincServer>false</useZincServer>,该选项是为了加速编译的,取消加速,避免不必要的出错。

      2. 修改<failOnViolation>true</failOnViolation>为<failOnViolation>false</failOnViolation>,该选项是对scala代码进行格式检查,源码中存在不符合scala标准的代码,为了避免格式检查不通过造成编译失败,需取消该项检查。

      3. 添加依赖项:

      <dependency>

          <groupId>net.alchim31.maven</groupId>

          <artifactId>scala-maven-plugin</artifactId>

          <version>3.2.0</version>

        </dependency>

    4. 执行编译命令,在编译过程中,需要从maven仓库下载相关依赖包,因此需要保持网络畅通,为了加快依赖下载速度,可以在安装maven的过程中设置阿里巴巴仓库为maven远程仓库。一次编译失败,可以尝试多次编译。

      ./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值