文章目录
- 例子
- 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文件的,我们要提交的应用程序可以直接采用如下方式提交,这样就没有报错了
$ 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