Spark-1.5.2之自己定义打包编译,基于当前最新版本号的spark源代码1.5.2版本号。

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

本地具体介绍Spark-1.5.2编译的过程


1、下载Spark-1.5.2的源代码

在官网下载,选择 一个合适自己网络的镜像

wget http://mirrors.noc.im/apache/spark/spark-1.5.2/spark-1.5.2.tgz

解压代码

tar zxfv spark-1.5.2.tgz

2、安装maven打包工具

首先说,官网一般推荐使用sbt, sbt比較适合于编译scala的project,maven一般适合于java的project。可是。sbt的源常常訪问不到,甚至要翻*,你们懂得。

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

wget http://apache.dataguru.cn/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

解压安装包

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

环境变量设置。依据自己安装的路径来配置

export  MAVEN_HOME=/opt/software/spark/apache-maven-3.3.9
export  PATH=$PATH:$MAVEN_HOME/bin
export  MAVEN_OPTS="-Xmx3g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
须要设置maven的jvm參数,打包spark还是蛮用内存的。

此外还需配置java与scala的环境变量

#java
export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
export JAVA_BIN=$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_LIBRARY_PATH=/opt/cloudera/parcels/CDH/lib/hadoop/lib/native


#scala
export SCALA_HOME=/opt/modules/scala-2.10.4
export PATH=$PATH:$SCALA_HOME/bin


3、打包编译Spark-1.5.2

正式打包前,我们做一个事情,改动源代码,比較简单的改动了

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



把三个路径下的启动scala文件的提示改动了


进入源代码文件夹,运行打包命令

cd spark-1.5.2
./make-distribution.sh --tgz -Phadoop-2.6 -Pyarn -DskipTests -Dhadoop.version=2.6.0 -Phive -Phive-thriftserver

基于hadoop2.6的打包编译,并添加了hive的支持。然后就是漫长的等待,比我们当时编译hadoop源代码还要久。最后 出现


最终所有SUCCESS后。不要看上面显示是11分钟。实际上中间因为网络问题。失败了好几次。不断地重试成功了。

注意,假设某些jar包下载不了。能够手动到提示的maven路径下下载。放到路径下:

/root/.m2
添加打包编译的成功率


最后执行后执行一下自己编译的Spark吧



看到没,打上自己的标签了。大笑