当前位置: 首页 > 工具软件 > Spark Kernel > 使用案例 >

Spark 之 spark submit

苏墨竹
2023-12-01

转自:https://my.oschina.net/cjun/blog/509247


一、命令 


注意./BnmsKpiCal-0.0.1.jar包一定要放在最后面,要不然jar包后面的参数不会生效


1.向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中。


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

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


二、Spark1.0.0 应用程序部署工具spark-submit

随着Spark的应用越来越广泛,对支持多资源管理器应用程序部署工具的需求也越来越迫切。Spark1.0.0的出现,这个问题得到了逐步改善。从Spark1.0.0开始,Spark提供了一个容易上手的应用程序部署工具bin/spark-submit,可以完成Spark应用程序在local、Standalone、YARN、Mesos上的快捷部署

1:使用说明
    

  进入$SPARK_HOME目录,输入bin/spark-submit --help可以得到该命令的使用帮助。
hadoop@wyy :/app/hadoop/spark100$ bin/spark-submit --help
Usage: spark-submit [options] <app jar | python file> [app options]
Options:
  --master MASTER_URL         spark://host:port, mesos://host:port, yarn, or local.
  --deploy-mode DEPLOY_MODE   driver运行之处,client运行在本机,cluster运行在集群
  --class CLASS_NAME          应用程序包的要运行的class
  --name NAME                 应用程序名称
  --jars JARS                 用逗号隔开的driver本地jar包列表以及executor类路径
  --py-files PY_FILES         用逗号隔开的放置在Python应用程序PYTHONPATH上的.zip, .egg, .py文件列表
  --files FILES               用逗号隔开的要放置在每个executor工作目录的文件列表
  --properties-file FILE      设置应用程序属性的文件放置位置,默认是conf/spark-defaults.conf
  --driver-memory MEM         driver内存大小,默认512M
  --driver-java-options       driver的java选项
  --driver-library-path       driver的库路径Extra library path entries to pass to the driver
  --driver-class-path         driver的类路径,用--jars 添加的jar包会自动包含在类路径里
  --executor-memory MEM       executor内存大小,默认1G

Spark standalone with cluster deploy mode only:
  --driver-cores NUM          driver使用内核数,默认为1
  --supervise                 如果设置了该参数,driver失败是会重启

Spark standalone and Mesos only:
  --total-executor-cores NUM  executor使用的总核数

YARN-only:
  --executor-cores NUM        每个executor使用的内核数,默认为1
  --queue QUEUE_NAME          提交应用程序给哪个YARN的队列,默认是default队列
  --num-executors NUM         启动的executor数量,默认是2个
  --archives ARCHIVES         被每个executor提取到工作目录的档案列表,用逗号隔开


      关于以上spark-submit的help信息,有几点需要强调一下:

  • 关于--master  --deploy-mode,正常情况下,可以不需要配置--deploy-mode,使用下面的值配置--master就可以了,使用类似 --master spark://host:port --deploy-mode cluster会将driver提交给cluster,然后就将worker给kill的现象。

Master URL含义
local使用1个worker线程在本地运行Spark应用程序
local[K]使用K个worker线程在本地运行Spark应用程序
local
  •  

使用所有剩余worker线程在本地运行Spark应用程序
spark://HOST:PORT连接到Spark Standalone集群,以便在该集群上运行Spark应用程序
mesos://HOST:PORT连接到Mesos集群,以便在该集群上运行Spark应用程序
yarn-client以client方式连接到YARN集群,集群的定位由环境变量HADOOP_CONF_DIR定义,该方式driver在client运行。
yarn-cluster以cluster方式连接到YARN集群,集群的定位由环境变量HADOOP_CONF_DIR定义,该方式driver也在集群中运行。
  • 如果要使用--properties-file的话,在--properties-file中定义的属性就不必要在spark-sumbit中再定义了,比如在conf/spark-defaults.conf 定义了spark.master,就可以不使用--master了。关于Spark属性的优先权为:SparkConf方式 > 命令行参数方式 >文件配置方式,具体参见Spark1.0.0属性配置

  • 和之前的版本不同,Spark1.0.0会将自身的jar包和--jars选项中的jar包自动传给集群。

  • Spark使用下面几种URI来处理文件的传播:

    • file:// 使用file://和绝对路径,是由driver的HTTP server来提供文件服务,各个executor从driver上拉回文件。

    • hdfs:, http:, https:, ftp: executor直接从URL拉回文件

    • local: executor本地本身存在的文件,不需要拉回;也可以是通过NFS网络共享的文件。

  • 如果需要查看配置选项是从哪里来的,可以用打开--verbose选项来生成更详细的运行信息以做参考,可以知道配置是如何加载的。建议开启。


 执行时需要传入的参数说明

Usage: spark-submit [options] <app jar | python file> [app options]

参数名称

含义

--master MASTER_URL

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

--deploy-mode DEPLOY_MODE

Driver程序运行的地方,client或者cluster

--class CLASS_NAME

主类名称,含包名

--name NAME

Application名称

--jars JARS

Driver依赖的第三方jar包

--py-files PY_FILES

用逗号隔开的放置在Python应用程序PYTHONPATH上的.zip,  .egg, .py文件列表

--files FILES

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

--properties-file FILE

设置应用程序属性的文件路径,默认是conf/spark-defaults.conf

--driver-memory MEM

Driver程序使用内存大小

--driver-java-options


--driver-library-path

Driver程序的库路径

--driver-class-path

Driver程序的类路径

--executor-memory MEM

executor内存大小,默认1G

--driver-cores NUM

Driver程序的使用CPU个数,仅限于Spark Alone模式

--supervise

失败后是否重启Driver,仅限于Spark  Alone模式

--total-executor-cores NUM

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

--executor-cores NUM

每个executor使用的内核数,默认为1,仅限于Spark on Yarn模式

--queue QUEUE_NAME

提交应用程序给哪个YARN的队列,默认是default队列,仅限于Spark on Yarn模式

--num-executors NUM

启动的executor数量,默认是2个,仅限于Spark on Yarn模式

--archives ARCHIVES

仅限于Spark on Yarn模式



 类似资料: