Spark:Spark中Yarn模式两种提交方式

前言

Spark集群的四种运行模式:

  • Local:单机运行,一般用于开发测试。
  • Yarn:Spark客户端直接连接Yarn,不需要额外构建Spark集群。
  • Standalone:构建一个由Master+Worker构成的Spark集群,Spark运行在集群中。
  • Mesos:Spark客户端直接连接Mesos,不需要额外构建Spark集群。

 

内容

  • 需要将提交应用程序的spark-submit的脚本中加上--master参数,设置为yarn-cluster或者yarn-client。如果没有设置,默认就是standalone模式。
  • 在yarn-client、yarn-cluster 提交模式中,可以不启动Spark集群,因为相关的jvm环境有yarn管理(启动、结束等)。standalone 提交模式中 Spark 集群一定要启动,因为需要依赖worker、Master进行任务的启动、调度等

 

前提准备

  • 启动HDFS和Yarn
    [root@master ~]# start-dfs.sh
    [root@master ~]# start-yarn.sh

     

Yarn Client

Spark:Spark中Yarn模式两种提交方式_第1张图片

  • 提交任务命令
    spark-submit --master yarn  --class org.apache.spark.examples.SparkPi  /usr/local/spark/examples/jars/spark-examples_2.11-2.4.4.jar 10
    
    spark-submit --master yarn-client --class org.apache.spark.examples.SparkPi /usr/local/spark/examples/jars/spark-examples_2.11-2.4.4.jar 10
    
    spark-submit  --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi /usr/local/spark/examples/jars/spark-examples_2.11-2.4.4.jar 10

     

  • 查看结果
    yarn-client模式将会在控制台中输出计算结果

Spark:Spark中Yarn模式两种提交方式_第2张图片

  •  特点
    Yarn-Client主要是用于测试
    (因为driver运行在本地客户端,负责调度application,会与yarn集群产生大量的网络通信,会导致网卡流量激增)
    好处在于直接执行时,本地可以看到所有的log,方便调试

 

 

Yarn Cluster

Spark:Spark中Yarn模式两种提交方式_第3张图片

  • 提交任务命令
    spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi /usr/local/spark/examples/jars/spark-examples_2.11-2.4.4.jar 10
    
    spark-submit --master yarn-cluster --class org.apache.spark.examples.SparkPi /usr/local/spark/examples/jars/spark-examples_2.11-2.4.4.jar 10
    
  • 查看结果
    http://master:8088/proxy/application_15xxxxxxxxxxx_0001/
    =http://master:8088/cluster/app/application_xxxxxxxxxxx_0001
    
    日志:http://master:8042/node/containerlogs/container_15xxxxxxxxxxx_0001_01_000001/<用户名>

    Spark:Spark中Yarn模式两种提交方式_第4张图片

Spark:Spark中Yarn模式两种提交方式_第5张图片

 

Spark:Spark中Yarn模式两种提交方式_第6张图片

  • 特点
    yarn-cluster用户生产环境,因为driver运行在NodeManager,没有网卡流量激增的问题。
    当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行
    因而yarn-cluster模式不适合运行交互类型的作业。
    缺点在于调试不方便,本地用spark-submit提交后,看不到log。
    只能通过yarn application -logs application_id 或者 yarn logs -applicationId application_id这种命令来查看
     

参考文献 

    Spark:三种任务提交流程standalone、yarn-cluster、yarn-client

    在集群上运行Spark应用程序

    Spark中yarn模式两种提交任务方式

    Spark-Yarn两种提交方式(client、cluster) 

    提交spark任务到yarn集群

    https://blog.csdn.net/lvtula/article/details/100544064

    http://wenda.chinahadoop.cn/question/3698

    spark基础之基于yarn两种提交模式分析

    计算结果查询

    通过yarn api提交Spark任务

你可能感兴趣的:(Spark)