• spark编译与onyarn的执行


    版权声明:本文为博主原创文章。未经博主同意不得转载。

    https://blog.csdn.net/u014393917/article/details/24640715

    Spark on yarn执行流程源码分析

    眼下的分析主要基于spark0.9.0cdh5的版本号进行分析,

    源码下载地址:https://github.com/cloudera/spark.git

    下载方式:gitclone url ./spark

    进入spark文件夹。执行gitcheckout cdh5-0.9.0_5.0.0



    源码编译

    使用sbt编译spark

    执行sbt命令须要使用http代理。不然连接不上网络。进入sbt/文件夹,使用vimsbt改动里面的内容,

    在最以下java命令的第二行加入-Dhttp.proxyHost=myserver-Dhttp.proxyPort=port

    执行例如以下命令编译spark

    SPARK_HADOOP_VERSION=2.3.0-cdh5.0.0SPARK_YARN=true sbt/sbt assembly

    SPARK_HADOOP_VERSION后是hadoop的版本号号,


    SPARK_HADOOP_VERSION=2.2.0sbt/sbt assembly

    Inaddition, if you wish to run Spark on YARN,set SPARK_YARN to true:

    SPARK_HADOOP_VERSION=2.0.5-alphaSPARK_YARN=true sbt/sbt assembly

    http连接代理设置:

    编辑spark_home/sbt/sbt文件,在文件最后的例如以下脚本部分:

    printf"Launching sbt from ${JAR} "

    java

    -Xmx1200m-XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=256m

    -jar${JAR}

    "$@"

    改动为

    printf"Launching sbt from ${JAR} "

    java

    -Dhttp.proxyHost=myserver-Dhttp.proxyPort=port

    -Xmx1200m-XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=256m

    -jar${JAR}

    "$@"


    通过例如以下命令通过sbtspark进行编译

    SPARK_HADOOP_VERSION=2.3.0-cdh5.0.0SPARK_YARN=true sbt/sbt assembly


    sbt命令请參考http://www.scala-sbt.org/release/docs/Getting-Started/Running.html#common-commands


    生成tar

    spark_home的根文件夹下,执行例如以下命令,编译spark的分布式部署tar.gz

    改动make-distribution.sh文件,

    在例如以下命令后

    Makedirectories

    rm-rf "$DISTDIR"

    mkdir-p "$DISTDIR/jars"

    echo"Spark $VERSION built for Hadoop $SPARK_HADOOP_VERSION" >"$DISTDIR/RELEASE"



    #Copy jars

    cp$FWDIR/assembly/target/scala*/*assembly*hadoop*.jar "$DISTDIR/jars/"

    加入此信息,把examples加入到tar.gz包中(測试过程能够执行此操作,把演示样例的代码一起打包起来)

    #Make directories

    mkdir-p "$DISTDIR/examples"



    #Copy jars

    cp$FWDIR/examples/target/scala*/*examples*assembly*.jar"$DISTDIR/examples/"


    ./make-distribution.sh--hadoop 2.3.0-cdh5.0.0--with-yarn --tgz

    命令执行完毕后,在spark_home下会生成一个tar.gz包。spark-0.9.0-hadoop_2.3.0-cdh5.0.0-bin.tar.gz


    通过Yarn执行spark演示样例程序

    通过export命令设置yarnconf环境变量,假设没有配置全局的yarnconf环境变量


    exportYARN_CONF_DIR=/home/hadoop/test.spark.yang/hadoop-2.0.0-cdh4.3.0/etc/hadoop

    exportSPARK_JAR=<spark_home>/jars/spark-assembly-0.9.0-incubating-hadoop2.0.0-cdh4.3.0.jar

    exportYARN_CONF_DIR=/home/hadoop/test.spark.yang/hadoop-2.0.0-cdh4.3.0/etc/hadoop

    exportHADOOP_CONF_DIR=/home/hadoop/test.spark.yang/hadoop-2.0.0-cdh4.3.0/etc/hadoop

    SPARK_JAR=/home/hadoop/test.spark.yang/spark-0.9.0-incubating/jars/spark-assembly-0.9.0-incubating-hadoop2.0.0-cdh4.3.0.jar



    ./bin/spark-classorg.apache.spark.deploy.yarn.Client

    --jar./examples/spark-examples-assembly-0.9.0-incubating.jar

    --classorg.apache.spark.examples.SparkTC

    --argsyarn-standalone

    --num-workers3

    --worker-cores1

    --master-memory512M

    --worker-memory1g



    通过java程序执行sparkon yarn的启动

    1.编写一个java应用程序,core-site/hdfs-site/yarn-site的配置文件加入到project中。

    2.sparkjar加入到project中。作用于当前project的class引用,

    3.在project中环境变量设置SPARK_JAR,来引用sparkjar的位置,

    4.在project中环境变量设置SPARK_LOG4J_CONF,来引用sparklog4j的位置

    通过SPARK_YARN_USER_ENV配置其他用户定义的环境变量值。

    通过SPARK_USE_CONC_INCR_GC配置是否使用默认的GC配置。,true/false

    通过SPARK_JAVA_OPTS配置spark执行时的相关JAVA_OPTS.

    通过JAVA_HOME配置java_home.

    5.设置一些系统属性,共spark执行时的使用,当然这些个系统属性本身也有默认的值

    a.属性名称QUEUE。默认值default。作用于am启动的队列名称,也能够在client调用进传入

    b.属性名称spark.yarn.report.interval,默认值1000app执行监控的间隔时间ms

    c.属性名称spark.yarn.submit.file.replication,默认值3。上传给yarn上执行的资源的复制份数,包含sparkjar,appjar

    d.属性名称spark.yarn.max.worker.failures,默认值3numworker传入參数的值*2取最大值。

    作用于app失败的重试次数,假设重试次数超过了指定的值。表示app执行失败。

    e.属性名称spark.yarn.applicationMaster.waitTries,默认值10

    等待SparkContext初始化完毕的等待次数,

    每次的等待时。让ApplicationMaster.sparkContextRef.wait=10000ms

    f.属性名称spark.yarn.scheduler.heartbeat.interval-ms,默认值5000

    通过此配置向RM设置am向其报告的时间间隔。


  • 相关阅读:
    angularJS 修改操作select回显选中的数据
    zkteco iface702 中控考勤机java开发步骤二---获取考勤机 的考勤数据
    zkteco iface702 中控考勤机java开发步骤一---连接考勤机
    JQuery的分页插件pagination.js
    Ajax跨域后台处理
    发送邮箱工具类--阿里企业邮箱群发
    kindeditor-4.1.10 ---文件上传
    导出excel表格
    算法
    Arrays类——Arrays.asList()方法使用
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10511404.html
  • Copyright © 2020-2023  润新知