美文网首页
Spark 提交任务时,yarncluster模式appname

Spark 提交任务时,yarncluster模式appname

作者: 背锅填坑交给我 | 来源:发表于2018-12-29 11:33 被阅读26次

    此文档spark版本为2.0以上。

    0x00 背景

    首先,可以传入spark运行环境参数有三个地方:命令行(spark-subimit),代码(new SparkConf或SparkSession),client配置文件。

    在spark提交任务时,代码里设置了appname,命令行和client配置文件都没有设置。
    使用yarn-client模式提交,appname是代码里设置的。
    使用yarn-cluster模式提交,appname变为执行类的全类名,例如com.aa.bb.Main。

    0x01 原因

    在源码里找到如果,appname设置为空,appname设置为类名。


    SparkSubmit源码

    可是明明在代码里设置了,为什么client模式可以,cluster模式不可以。
    原因是client和cluster模式启动方式不一样(后边分析),cluster模式不会读取代码里配置,直接读取命令行配置。client模式都会读取,但是代码里优先级最高。

    SparkSubmit源码
    在给apname赋值的时候,会先取命令行传入的参数再取客户端配置文件的参数。
    所以cluster模式读的是命令行配置。

    0x02 解决

    在命令行中提交时候,加上--name 参数来指定appname。

    ./bin/spark-submit \
      --class org.apache.spark.examples.SparkPi \
      --master yarn \
      --deploy-mode cluster \  
      --executor-memory 20G \
      --executor-cores 2 \   
      --num-executors 50 \
      --name sparkdemo \
      /path/to/examples.jar \
      1000
    

    相关文章

      网友评论

          本文标题:Spark 提交任务时,yarncluster模式appname

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