美文网首页我爱编程程序员大数据
spark-2.1.0-bin-2.6.0-cdh5.x源码编译

spark-2.1.0-bin-2.6.0-cdh5.x源码编译

作者: sparkle123 | 来源:发表于2018-03-16 12:10 被阅读0次

    前置条件:

    CentOS6.7
    JDK1.7+
    Maven 3.3.9
    Spark2.1.0
    

    1.到spark官网上下载spark2.1.0的源码


    spark-download.png

    2.执行mkdir source新建目录,在此目录下通过wget下载源代码
    wget https://archive.apache.org/dist/spark/spark-2.1.0/spark-2.1.0.tgz

    3.在source目录下执行tar -zxvf spark-2.1.0.tgz解压tgz代码包。

    4.设置Maven的使用内存,默认的maven内存可能不够用
    export MAVEN_OPTS="-Xmx2g XX:ReservedCodeCacheSize=512m"

    5.使用mvn编译

    • 由于HDFS不是协议兼容的,所以,编译Spark时候,需要指定特定的HDFS版本,


      image.png
    • 服务器上hadoop版本:

    $ echo $HADOOP_HOME
    /home/hadoop/app/hadoop-2.6.0-cdh5.7.0
    
    • 由于服务器上的hadoop版本是hadoop-2.6.0-cdh5.7.0,所以,对应的Profile:hadoop-2.6
      mvn命令如下:
      /build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=hadoop-2.6.0-cdh5.7.0 -DskipTests clean package

    • 如果,需要编译Hive和JDBC支持的话,需要添加profile
      -Phive -Phive-thriftserver

    • 在spark解压的源码根目录下执行最终的mvn命令:
      /build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=hadoop-2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -DskipTests clean package

    • 初次编译Spark,需要下载很多依赖,因此编译时间随网速情况而定,1~2小时甚至更久

    6.编译一个可以运行的tgz包(推荐使用),在spark代码解压的根目录下执行命令:

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

    生成spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz

    7.Spark2.1.0默认支持的scala版本是2.11.8,如果想要使用2.10的话,编译前需要
    ./dev/change-scala-version.sh 2.10

    • 注意1:

    [ERROR] Failed to execute goal on project spark-launcher_2.11: Could not resolve dependencies for project org.apache.spark:spark-launcher_2.11:jar:2.1.0: Could not find artifact org.apache.hadoop:hadoop-client:jar:hadoop-2.6.0-cdh5.7.0 in central (https://repo1.maven.org/maven2) -> [Help 1]

    那么需要在pom.xml里面配置:

    <repository>
          <id>cloudera</id>
          <name>cloudera Repository</name>
           <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
    
    pom仓库配置.png
    • 注意2:

    was cached in the local repository,
    resolution will not be reattemped until the update interval of nexus has
    ......

    对策:

    1.去仓库目录把 xxx.lastUpdated文件全部删除,重新执行maven命令
    2.编译命令后面加上 -U
    

    7.编译成功(VPN打开耗时45~46分钟):


    编译成功1.png 编译成功2.png

    8.在spark解压的源代码的根路径下可以看到编译成功的spark包,名称形如:

    spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz
    (spark-spark版本号-bin-hadoop版本号-CDH社区版本号)
    

    以上内容参考:http://spark.apache.org/docs/2.1.0/building-spark.html

    相关文章

      网友评论

        本文标题:spark-2.1.0-bin-2.6.0-cdh5.x源码编译

        本文链接:https://www.haomeiwen.com/subject/guylqftx.html