【Spark学习笔记】04-提交Spark任务的两种模式详解

一、基于Standalone提交任务

1.基于Standalone-client提交任务

--deploy-mode:不写,默认就是client提交

也可以配置:--deploy-mode client

./spark-submit --master spark://node1:7077 
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100

Spark基于Standalone-client模式提交任务,首先Driver是在客户端启动,每当在客户端提交一个Spark Application,就会启动一个Driver。每个Application都会有自己独立的Driver,Driver与集群中的Worker有大量的通信,如果在客户端提交大量的Application,会造成客户端网卡流量激增问题。在客户端可以看到task执行日志和结果。这种模式适用于程序测试,不适用生产环境。

2.基于Standalone-cluster提交任务

注意:在cluster模式下,jar包需要放到集群每台节点可以访问的目录(如HDFS),如果是放在本地,需要在每个节点上都放置一份

./spark-submit --master spark://node1:7077 --deploy-mode cluster 
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100

Spark基于Standalone-cluster模式提交任务,首先客户端会向Master申请启动Driver,Driver是随机在一台满足资源的Worker节点上启动,如果在客户端提交多个Spark Application,每个Application的Driver是分散在集群中启动的,解决了单节点网卡流量激增问题。这种模式适用于生产环境,在客户端看不到task执行日志和结果,需要去Spark的WebUI中查看。

二、基于Yarn提交任务

1.Yarn-client提交任务方式

./spark-submit --master yarn 
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100

Spark基于Yarn-client模式提交任务,Driver首先在客户端启动,当客户端提交多个Spark Application时,每个Application都有独立的Driver,Driver与与集群有大量的通信,会有单节点网卡流量激增的问题。这种模式适用于程序测试,不适用与生产环境,在客户端可以看到task的执行和结果。

2.Yarn-cluster提交任务方式

./spark-submit --master yarn --deploy-mode cluster 
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100

Spark基于Yarn-cluster模式提交任务,Yarn的ApplicationMaster启动之后就是相当于Driver,负责task发送,当在客户端提交多个Spark Application时,每个Application都会有独立的AM,AM是分散在集群中启动,相当于将client模式中的单节点网卡流量激增问题分散到集群中。这种模式适用于生产环境,在客户端看不到task的执行日志和结果,要去Yarn的WebUI看。

原文地址:https://www.cnblogs.com/yangyh11/p/13882245.html