使用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

下载命令(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 仓库地址配置,将默认的仓库,修改为

  <repository>
      <id>maven-ali</id>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
    </repository>
    <repository>
        <id>cloudera</id>
        <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
  </repositories>

修改后的内容如图

(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 "<id>hive</id>";\
    # 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

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环境的部署

 

 

拓展

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文件中,我们可以看到如下内容

    <profile>
      <id>hadoop-2.6</id>
      <!-- Default hadoop profile. Uses global properties. -->
    </profile>

    <profile>
      <id>hadoop-2.7</id>
      <properties>
        <hadoop.version>2.7.3</hadoop.version>
        <curator.version>2.7.1</curator.version>
      </properties>
    </profile>

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值