前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[1015]spark-submit提交任务及参数说明

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

作者头像
周小董
发布2021-07-14 14:10:14
7.8K0
发布2021-07-14 14:10:14
举报
文章被收录于专栏:python前行者

文章目录

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 例子
  • 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
                                                领券
                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档