spark编译

为什么要对spark进行重新编译?

由于我们所有的环境统一使用CDH软件版本,并且对应的CDH版本5.14.0这个版本,所以我们也直接下载使用对应的spark5.14.0版本即可。但是由于spark对应的5.14.0CDH版本的软件spark版本还停留在spark1.x,并且CDH版本的spark不支持sparkSQL的功能sparkSQL模块被阉割掉了)因为Cloudera公司认为有了impala就不需要再使用sparkSQL功能了,同时也是为了推广impala,所以直接阉割掉了sparkSQL模块。我们可以使用Apache的版本的spark来进行重新编译,使其对应我们的CDH5.14.0版本,并且将sparkSQL也能够支持

spark编译官方文档说明

http://spark.apache.org/docs/latest/building-spark.html#specifying-the-hadoop-version

由于下载jar包太慢,如果需要自己编译,尽量使用资料当配套的maven仓库

第一步:下载spark的源码

我们这里选用spark2.2.0这个apache的版本,然后重新编译对应我们的CDH5.14.0版本

https://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0.tgz

第二步:准备linux环境,安装必须软件

linux安装maven-3.3.9及其以上版本

maven必须使用3.3.9以上的版本进行编译我们这里选择使用3.5.0版本

记得使用资料当中的maven仓库来进行编译

配置settings.xml

<localRepository>/export/servers/mvnrepository</localRepository>

配置maven环境变量

export MAVEN_HOME=/export/servers/apache-maven-3.5.0
export MAVEN_OPTS="-Xms4096m -Xmx4096m"
export PATH=:$MAVEN_HOME/bin:$PATH

linux安装jdk1.8.141

略.

第三步解压spark源码,修改配置,准备编译

上传源码压缩包并解压

将spark的源码,上传到/export/softwares路径下面去

解压源码到/export/servers路径下面去

cd /export/softwares/

tar -zxf spark-2.2.0.tgz  -C /export/servers/

修改源码配置文件

修改make-distribution.sh这个脚本

cd /export/servers/spark-2.2.0/dev

vim make-distribution.sh

第三行添加以下内容

VERSION=2.2.0

SCALA_VERSION=2.11.8

SPARK_HADOOP_VERSION=2.6.0-cdh5.14.0

SPARK_HIVE=1

注释掉以下这些内容

#VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null | grep -v "INFO" | tail -n 1)
#SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\
#    | grep -v "INFO"\
#    | tail -n 1)
#SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\
#    | grep -v "INFO"\
#    | tail -n 1)
#SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null\
#    | grep -v "INFO"\
#    | 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)

添加maven编译库

修改pom.xml

cd /export/servers/spark-2.2.0
vim pom.xml

修改hadoopflume以及zookeeper的版本

<hadoop.version>2.6.0-cdh5.14.0</hadoop.version>
<flume.version>1.6.0-cdh5.14.0</flume.version>
<zookeeper.version>3.4.5-cdh5.14.0</zookeeper.version>

添加CDH以及阿里云的仓库地址

<repository>
      <id>cloudera</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
 <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <layout>default</layout>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </snapshots>
        </repository>

添加pluginRepository

<pluginRepository>
      <id>cloudera</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
     </pluginRepository>

第四步:开始编译

修改完成以上所有配置之后,执行以下命令准备开始编译

cd /export/servers/spark-2.2.0/

export MAVEN_OPTS="-Xmx4g -XX:ReservedCodeCacheSize=1024m"

./dev/make-distribution.sh --name 2.6.0-cdh5.14.0 --tgz  -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.14.0 -DskipTests

  

posted @ 2017-06-15 11:05  zhangqi0828  阅读(194)  评论(0编辑  收藏  举报