大数据Spark05_spark-submit提交参数

Spark-Submit提交参数

Options:

 --master

 MASTER_URL, 可以是spark://host:port, mesos://host:port, yarn,  yarn-cluster,yarn-client, local

 --deploy-mode

DEPLOY_MODE, Driver程序运行的地方,client或者cluster,默认是client。

 --class

CLASS_NAME, 主类名称,含包名

 --jars

逗号分隔的本地JARS, Driver和executor依赖的第三方jar包

 --files

用逗号隔开的文件列表,会放置在每个executor工作目录中

 --conf

spark的配置属性

 --driver-memory

Driver程序使用内存大小(例如:1000M,5G),默认1024M

 --executor-memory

每个executor内存大小(如:1000M,2G),默认1G

示例:

 向spark standalone以client方式提交job。

 
 

./spark-submit --master spark://hadoop3:7077 --deploy-mode client --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.3.0-hadoop2.3.0.jar

--deploy-mode client,在提交的节点会有个main进程,来运行Driver program。如果使用--deploy-mode cluster,则Driver program直接运行在worker中。

向spark on yarn以client方式提交job.

./spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi ../lib/spark-examples


Spark standalone with cluster deploy mode only:

 --driver-cores

Driver程序的使用core个数(默认为1),仅限于Spark standalone模式

Spark standalone or Mesos with cluster deploy mode only:

 --supervise

失败后是否重启Driver,仅限于Spark  alone或者Mesos模式

Spark standalone and Mesos only:

 --total-executor-cores

executor使用的总核数,仅限于SparkStandalone、Spark on Mesos模式

Spark standalone and YARN only:

 --executor-cores

每个executor使用的core数,Spark on Yarn默认为1,standalone默认为worker上所有可用的core。

YARN-only:

 --driver-cores

driver使用的core,仅在cluster模式下,默认为1。

 --queue

QUEUE_NAME  指定资源队列的名称,默认:default

 --num-executors

一共启动的executor数量,默认是2个。

资源调度源码分析

资源请求简单图


资源调度Master路径:


路径:spark-1.6.0/core/src/main/scala/org.apache.spark/deploy/Master/Master.scala

提交应用程序,submit的路径:


路径:spark-1.6.0/core/src/main/scala/org.apache.spark/ deploy/SparkSubmit.scala


总结:

1. Excutor在集群中分散启动,有利于task计算的数据本地化。

2. 默认情况下(提交任务的时候没有设置--executor-cores选项),每一个Worker为当前的Application启动一个Executor,这个Executor会使用这个Worker的所有的cores和1G内存。

3. 如果想在Worker上启动多个Executor,提交Application的时候要加--executor-cores这个选项。

4. 默认情况下没有设置--total-executor-cores,一个Application会使用Spark集群中所有的cores。

 结论演示

使用Spark-submit提交任务演示。也可以使用spark-shell

1. 默认情况每个worker为当前的Application启动一个Executor,这个Executor使用集群中所有的cores和1G内存。

./spark-submit

--master spark://node1:7077

 --class org.apache.spark.examples.SparkPi

 ../lib/spark-examples-1.6.0-hadoop2.6.0.jar

10000

2. 在workr上启动多个Executor,设置--executor-cores参数指定每个executor使用的core数量。

./spark-submit

 --master  spark://node1:7077

 --executor-cores 1

 --class org.apache.spark.examples.SparkPi

../lib/spark-examples-1.6.0-hadoop2.6.0.jar

10000

3. 内存不足的情况下启动core的情况。Spark启动是不仅看core配置参数,也要看配置的core的内存是否够用。

./spark-submit

--master  spark://node1:7077

--executor-cores 1  

--executor-memory 3g

--class org.apache.spark.examples.SparkPi

 ../lib/spark-examples-1.6.0-hadoop2.6.0.jar

10000

4. --total-executor-cores集群中共使用多少cores

注意:一个进程不能让集群多个节点共同启动。

./spark-submit

--master  spark://node1:7077

--executor-cores 1  

--executor-memory2g

--total-executor-cores 3

--class org.apache.spark.examples.SparkPi

 ../lib/spark-examples-1.6.0-hadoop2.6.0.jar

10000



猜你喜欢

转载自blog.csdn.net/yangshaojun1992/article/details/78472698