zoukankan      html  css  js  c++  java
  • Spark 2.1.1 源码编译

    Spark 2.1.1 源码编译

    标签(空格分隔): Spark


    Spark 源码编译

    环境准备与起因

    由于线上Spark On Yarn Spark Streaming程序在消费kafka 写入HDFS table 使用Partition by 和 Savemode.append,在一定条件下导致写入HDFS 超过了处理批次。经过排查应该与 Spark 写入parquet 文件追加时候元数据检查所导致,修改源码后需要对其进行编译。

    参考Spark的官方文档
    根据Spark官方文档编译模块的介绍(http://spark.apache.org/docs/2.1.1/building-spark.html)的介绍:
    环境:centos/ubuntu
    
    软件准备:           
    spark-2.2.1.tgz源码
    jdk-8u144-linux-x64.tar.gz   JDK1.8以上  
    apache-maven-3.5.0-bin.tar.gz
    scala-2.11.8.tgz
    hadoop-2.7.3.tar.gz
    
    

    注意点

    yum -y install git
    环境变量更改maven 默认内存
     export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"(官网建议)
    

    pom.xml

    修改pom.xml 中属于自己使用的一些hadoop 版本,zookeeper 版本等信息

    编译

    手动自定义编译

    # Apache Hadoop 2.7.X and later(指定hadoop版本)
    mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.3 -DskipTests clean package
    
    # With Hive 1.2.1 support(指定hive的版本)
    mvn -Pyarn -Phive -Phive-thriftserver -DskipTests clean package
    
    指定scala版本
    ./dev/change-scala-version.sh 2.10
    mvn -Pyarn -Dscala-2.10 -DskipTests clean package
    
    由于我们生产上的CDH的版本如下: hadoop-2.7.3.tar.gz
    mvn -Pyarn -Phive -Phive-thriftserver -Phadoop-2.7 -Dhadoop.version=2.7.3 -DskipTests clean package  (采用这种方式编译出来的不是tar.gz的格式)
    
    

    官方脚本编译

    ./dev/make-distribution.sh --name 2.7.3   --tgz   -Phadoop-2.7 -Dhadoop.version=2.7.3 -Phive -Phive-thriftserver  -Pyarn   (这种方法编译出来的就是tgz形式,但是速度不快)
    

    注意事项:

    官方脚本自带一些环境变量检查,会导致编译检查耗时,直接强制修改make-distribution.sh脚本

    1.将VERSION ,SCALA_VERSION ,SPARK_HADOOP_VERSION ,SPARK_HIVE 注释掉,直接写上自己的版本

    #VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null | grep -v "INFO" | tail -n 1)        指的是spark2.1.1这个版本
    #SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null    指的是scala 2.11
    #    | grep -v "INFO"
    #    | tail -n 1)
    #SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null  指的是hadoop.version=2.7.3
    #    | grep -v "INFO"
    #    | tail -n 1)
    #SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null    SPARK_HIVE为1表示支持
    #    | 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)
    将以下的内容贴在注释掉的那个脚本的后面即可
    
    VERSION=2.1.1
    SCALA_VERSION=2.11
    SPARK_HADOOP_VERSION=2.7.3
    SPARK_HIVE=1
    
    
    if [ "$MAKE_TGZ" == "true" ]; then
    TARDIR_NAME=spark-$VERSION-bin-$NAME #打包的文件名spark-2.1.1-bin-2.7.3
    TARDIR="$SPARK_HOME/$TARDIR_NAME"     
    rm -rf "$TARDIR"
    cp -r "$DISTDIR" "$TARDIR"
    tar czf "spark-$VERSION-bin-$NAME.tgz" -C "$SPARK_HOME" "$TARDIR_NAME"
    rm -rf "$TARDIR"
    fi
    

    编译完成

    编译完成后包在Spark src 主目录下,

  • 相关阅读:
    SET TEXTSIZE number
    Oracle 参数之_small_table_threshold
    Oracle等待事件db file parallel read
    ORA-12631 / TNS-12631: Username retrieval failed
    Oracle的Connect By理解
    ORA-01436: 用户数据中的CONNECT BY 循环
    Cortex-M3启动深度解析
    【SmartOS】轻量级多任务调度系统
    物联网智能硬件设备身份验证机制
    物联网智能硬件设备常见攻击方法
  • 原文地址:https://www.cnblogs.com/hit-zb/p/10884225.html
Copyright © 2011-2022 走看看