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

前提:

  • 安装并启动hdfs和yarn。
  • 修改conf/spark-env.sh,添加:
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop	#hadoop配置文件
  • 如果需要连接hive,需先启动hive服务(node1服务器),并且在conf目录下创建hive-site.xml

    
        hive.metastore.uris
        thrift://node1:9083
    

一、概述(可以指定内存和核数,也可以不指定)

  • client模式:
./spark-submit --master yarn --class com.cfl.spark.hive.Test /data/SparkHive.jar 100 --executor-memory 512M --executor-cores 1 
  • cluster模式:yarn-cluster
./spark-submit --master yarn --deploy-mode cluster --class com.cfl.spark.hive.Test /data/SparkHive.jar 100 --executor-memory 512M --executor-cores 1 

二、介绍

  • client模式:

Spark-Yarn两种提交方式(client、cluster)_第1张图片

  • cluster模式:

Spark-Yarn两种提交方式(client、cluster)_第2张图片

流程:

 

三、client模式和cluster模式的区别

  1. 启动集群nodeManager向ResourceManager汇报资源。
  2. RS掌握了集群资源。
  3. 客户端提交application。
  4. 客户端向ResourceManager申请启动ApplicationMaster。
  5. ResourceManager收到请求之后随即找到一台NodeManager结点启动ApplicationMaster。
  6. ApplicationMaster启动之后向ResourceManager申请资源用于启动Executor。
  7. ResourceManager将申请到的Executor的节点NodeManager返回给ApplicationMaster。
  8. ApplicationMaster连接NodeManager启动Executor。
  9. Executor启动字后反向注册给ApplicationMaster
  10. ApplicationMaster发送task到Executor执行并监控task执行回收结果。
  • client模式提交任务,会在客户端看到task的执行情况和结果,当在客户端提交多个application时,每个application都会启动自己的Driver,Driver与集群Worker有大量的通信,会造成客户端网卡流量激增问题。这种模式适用于程序测试。不适用于生产环境。
  • 模式提交任务,Driver会在急群众随机一台Worker上启动,如果提交多个application时,那么每个application的Driver会分散到集群的Worker节点,相当于将client模式的客户端网卡流量激增问题分散到集群中。这种模式适用于生产环境。
  • 注意:因为cluster模式,随机分散在Worker节点上创建Driver,由Driver来发送任务到Worker。所以打包的程序任务必须在分散的Worker节点对应的目录下都存在 

你可能感兴趣的:(Spark)