[1015]spark-submit提交任务及参数说明

2021-07-14 14:10:14 浏览数 (1)

文章目录

    • 例子
    • spark-submit 详细参数说明
      • --master
      • --deploy-mode
      • --class
      • --name
      • --jars
      • --packages
      • --exclude-packages
      • --repositories
      • --py-files
      • --files
      • --conf PROP=VALUE
      • --properties-file
      • --driver-memory
      • --driver-java-options
      • --driver-library-path
      • --driver-class-path
      • --driver-cores
      • --executor-memory
      • --total-executor-cores
      • --num-executors
      • --executor-core
    • 提交python脚本
    • spark2-submit 提交 python(pyspark)项目
      • local
      • yarn

spark-submit 可以提交任务到 spark 集群执行,也可以提交到 hadoop 的 yarn 集群执行。

例子

一个最简单的例子,部署 spark standalone 模式后,提交到本地执行。

代码语言:javascript复制
./bin/spark-submit 
--master spark://localhost:7077 
examples/src/main/python/pi.py

如果部署 hadoop,并且启动 yarn 后,spark 提交到 yarn 执行的例子如下。

注意,spark 必须编译成支持 yarn 模式,编译 spark 的命令为:

代码语言:javascript复制
build/mvn -Pyarn -Phadoop-2.x -Dhadoop.version=2.x.x -DskipTests clean package

其中, 2.x 为 hadoop 的版本号。编译完成后,可执行下面的命令,提交任务到 hadoop yarn 集群执行。

代码语言:javascript复制
./bin/spark-submit --class org.apache.spark.examples.SparkPi 
--master yarn 
--deploy-mode cluster 
--driver-memory 1g 
--executor-memory 1g 
--executor-cores 1 
--queue thequeue 
examples/target/scala-2.11/jars/spark-examples*.jar 10

spark-submit 详细参数说明

–master

master 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local

MASTER_URL:设置集群的主URL,用于决定任务提交到何处执行。

常见的选项有

  • local:提交到本地服务器执行,并分配单个线程
  • local[k]:提交到本地服务器执行,并分配k个线程
  • spark://HOST:PORT:提交到standalone模式部署的spark集群中,并指定主节点的IP与端口
  • mesos://HOST:PORT:提交到mesos模式部署的集群中,并指定主节点的IP与端口
  • yarn:提交到yarn模式部署的集群中

–deploy-mode

在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client

  • DEPLOY_MODE:设置driver启动的位置,可选项如下,默认为client
  • client:在客户端上启动driver,这样逻辑运算在client上执行,任务执行在cluster上
  • cluster:逻辑运算与任务执行均在cluster上,cluster模式暂时不支持于Mesos集群或Python应用程序

–class

应用程序的主类,仅针对 java 或 scala 应用

CLASS_NAME:指定应用程序的类入口,即主类,仅针对java、scala程序,不作用于python程序

–name

应用程序的名称

–jars

用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下

–packages

包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标

–exclude-packages

为了避免冲突 ,指定的参数–package中不包含的jars包

–repositories

远程 repository

附加的远程资源库(包含jars包)等,可以通过maven坐标进行搜索

–py-files

PY_FILES:逗号隔开的的.zip、.egg、.py文件,这些文件会放置在PYTHONPATH下,该参数仅针对python应用程序

–files

FILES:逗号隔开的文件列表,这些文件将存放于每一个工作节点进程目录下

–conf PROP=VALUE

指定spark配置属性的值,格式为PROP=VALUE, 例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"

–properties-file

指定需要额外加载的配置文件,用逗号分隔,如果不指定,默认为 conf/spark-defaults.conf

–driver-memory

Driver内存,默认 1G

–driver-java-options

传给 driver 的额外的 Java 选项

–driver-library-path

传给 driver 的额外的库路径

–driver-class-path

传给 driver 的额外的类路径,用–jars 添加的jar包会自动包含在类路径里

–driver-cores

Driver 的核数,默认是1。在 yarn 或者 standalone 下使用

–executor-memory

每个 executor 的内存,默认是1G

–total-executor-cores

所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用

–num-executors

启动的 executor 数量。默认为2。在 yarn 下使用

–executor-core

每个 executor 的核数。在yarn或者standalone下使用


当’–master’参数设置为Standalone,‘–deploy-mode’参数设置为cluster时,如下选项可以设置:

  • –driver-cores NUM:driver使用的内核数,默认为1

当’–master’参数设置为Standalone或者Mesos,‘–deploy-mode’参数设置为cluster时,如下选项可以设置:

  • –supervise:如果设置了该参数,driver失败是会重启
  • –kill SUBMISSION_ID:如果设置了该参数,则会杀死指定SUBMISSION_ID的driver进程
  • –status SUBMISSION_ID:如果设置了该参数,则请求返回指定SUBMISSION_ID的driver的状态

当’–master’参数设置为Standalone或者Mesos时,如下选项可以设置:

  • –total-executor-cores NUM:设置集群中所有工作节点上executor使用的内核总数

当’–master’参数设置为Standalone或者YARN时,如下选项可以设置:

  • –executor-cores NUM:每个executor使用的核数

当’–master’参数设置为YARN时,如下选项可以设置:

  • –driver-cores NUM :当–deploy-mode为cluster时,driver使用的内核数,默认为1
  • –queue QUEUE_NAME :将任务提交给哪个YARN队列,默认为YARN的默认队列
  • –num-executors NUM:设置启动的executor数量,默认为2
  • –archives ARCHIVES :被每个executor提取到工作目录的档案列表,用逗号隔开

提交python脚本

在提交firstApp.py脚本时,使用如下指令

代码语言:javascript复制
$ spark-submit 
--master local[2] 
--num-executors 2 
--executor-memory 1G 
--py-files /home/hadoop/Download/test/firstApp.py

结果报如下错误“Error: Cannot load main class from JAR file:/home/hadoop/Download/spark-2.1.1-bin-hadoop2.7/bin/master”,其中:/home/hadoop/Download/spark-2.1.1-bin-hadoop2.7/bin/master与hadoop安装路径相关,虽然python脚本没有主类这一说,但是可以猜测到该错误是由于找不到函数入口导致,我在这里找打了一些答案,--py-fiels参数是用来添加应用程序所依赖的python文件的,我们要提交的应用程序可以直接采用如下方式提交,这样就没有报错了

代码语言:javascript复制
$ spark-submit 
--master local[2] 
--num-executors 2 
--executor-memory 1G 
 /home/hadoop/Download/test/firstApp.py

spark2-submit 提交 python(pyspark)项目

两种方式

  • local
  • yarn

假设一个pyspark的项目下边有两个文件:main.py和utils.py。其中main.py是项目的主入口文件,utils.py中可能包含一些UDF。

local

(1)目录结构

(2)提交命令

代码语言:javascript复制
spark2-submit --master local --deploy-mode client main.py

yarn

(1)目录结构

其中project.zip是main.py和utils.py两个文件的zip压缩文件。 (2)提交命令

代码语言:javascript复制
spark2-submit --master yarn --deploy-mode client --py-files project.zip main.py

参考:https://www.cnblogs.com/weiweifeng/p/8073553.html https://www.cnblogs.com/hgz-dm/p/11356392.html https://blog.csdn.net/qq_28637799/article/details/102529280

0 人点赞