使用spark源码脚本编译CDH版本spark

需求描述

个人开发环境中大数据所有软件版本都是基于CDH5.15.1版本安装,

但是CDH版本spark还停留在1.x版本,并且CDH版本的spark不支持sparkSQL的功能。

我们可以使用Apache版本的spark版本进行重新编译满足 CDH版本的spark。

版本

spark:spark2.4.4

maven:3.6.2

java:jdk8

cdh版本:5.15.1

注意事项

maven版本以及java版本说明

The Maven-based build is the build of reference for Apache Spark. Building Spark using Maven requires Maven 3.5.4 and Java 8. Note that support for Java 7 was removed as of Spark 2.2.0.

即 使用maven编译spark源码必须保证maven是3.5.4以及java 8 环境

在2.2.0版本开始,移除java7的方式进行编辑。

个人使用maven3.6.2也能正常编译,所以个人觉得官网的内容可以理解为需要 maven版本3.5.4及以上,java版本需要jdk8及以上。

下载编译及安装

1.spark官网下载地址:

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

下载的时候选择:Source Code

使用spark源码脚本编译CDH版本spark_第1张图片

下载命令(2.4.4版本源码)

wget http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.4/spark-2.4.4.tgz

2.解压源码包

tar -zxvf spark-2.4.4.tgz  -C ~/software/

3.根据个人需求对源码包中的pom文件以及编译脚本(/dev/make-distribution.sh)进行修改

(1)修改pom.xml

[wangyichao@bigdata spark-2.4.4]$ cd ~/software/spark-2.4.4/
[wangyichao@bigdata spark-2.4.4]$ vim pom.xml

在pom文件中找到maven 仓库地址配置,将默认的仓库,修改为

  
      maven-ali
      http://maven.aliyun.com/nexus/content/groups/public/
      
        true
      
      
        true
        always
        fail
      
    
    
        cloudera
        https://repository.cloudera.com/artifactory/cloudera-repos/
    
  

修改后的内容如图

使用spark源码脚本编译CDH版本spark_第2张图片

(2)修改 dev/make-distribution.sh

[wangyichao@bigdata spark-2.4.4]$ vim dev/make-distribution.sh

注释掉以下内容:

VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null\
    | grep -v "INFO"\
    | grep -v "WARNING"\
    | tail -n 1)
SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\
    | grep -v "INFO"\
    | grep -v "WARNING"\
    | tail -n 1)
SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\
    | grep -v "INFO"\
    | grep -v "WARNING"\
    | tail -n 1)
SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null    \
    | grep -v "INFO"\
    | grep -v "WARNING"\
    | fgrep --count "hive";\
    # Reset exit status to 0, otherwise the script stops here if the last grep finds nothing\
    # because we use "set -o pipefail"
    echo -n)

然后根据实际情况添加以下内容

VERSION=2.4.4
SCALA_VERSION=2.11
SPARK_HADOOP_VERSION=2.6.0-cdh5.15.1
SPARK_HIVE=1
  • VERSION 

spark的版本

  • SCALA_VERSION

使用的scala版本

  • SPARK_HADOOP_VERSION

使用什么版本hadoop进行打包编译

  • SPARK_HIVE

是否使用hive

使用spark源码脚本编译CDH版本spark_第3张图片

3.执行编译安装

spark官方提供的命令demo:

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

我们可以根据个人需求进行一定的修改,安装我们个人使用过程中所需要的部分,例如个人知识需要hive、yarn、k8s部分

./dev/make-distribution.sh \
--name 2.4.4-cdh5.15.1 \
--tgz -Dhadoop.version=2.6.0-cdh5.15.1 \
-Phadoop-2.6 \
-Phive \
-Phive-thriftserver \
-Pyarn -Pkubernetes

4.等到安装完成

打包编译成功后,会在当前文件生成一个tgz包(spark-2.4.4-bin-2.4.4-cdh5.15.1.tgz),后续就可以根据该tgz包进行spark环境的部署

使用spark源码脚本编译CDH版本spark_第4张图片

 

 

拓展

1.执行脚本make-distribution.sh

三个较为关键的变量:

  • export MAVEN_OPTS="${MAVEN_OPTS:--Xmx2g -XX:ReservedCodeCacheSize=512m}"
     
  • BUILD_COMMAND=("$MVN" -T 1C clean package -DskipTests $@)
     
  • TARDIR_NAME=spark-$VERSION-bin-$NAME

在spark官方文档中描述:

对maven的jvm参数进行调整,避免JVM内存溢出

将下面的这个参数配置到环境变量中

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

我们在使用脚本编译时候,并没有人为的设定maven的jvm参数,原因就是因为在执行脚本中,我们可以看到脚本中已经通过MAVEN_OPTS 这个变量对maven的jvm内存进行了调整,并且执行脚本归根到底也是在使用maven命令进行安装。

安装完成后会生成一个 spark-$VERSION-bin-$NAME 命名的包,这个也可以验证了我们文件夹中生成的spark-2.4.4-bin-2.4.4-cdh5.15.1.tgz tgz包。

2.pom文件中的内容

在pom文件中,我们可以看到如下内容

   
      hadoop-2.6
     
   

   
      hadoop-2.7
     
        2.7.3
        2.7.1
     

   

2.6版本的hadoop,官方没有指定hadoop版本,编译命令需要添加:-Dhadoop.version=hadoop-2.6.0-cdh5.15.1

你可能感兴趣的:(环境部署,安装)