搞懂spark-submit参数及应用程序提交(详细)

更新时间:2023-07-22 21:56:51 阅读: 评论:0

搞懂spark-submit 参数及应⽤程序提交(详细)
提交申请
spark 的bin ⽬录中的spark submit 脚本⽤于在集群上启动应⽤程序。它可以通过⼀个统⼀的接⼝使⽤Spark ⽀持的所有集群管理器,这样您就不必特别为每个集群管理器配置应⽤程序。
捆绑应⽤程序的依赖项
鹅蛋脸女生发型如果代码依赖于其他项⽬,则需要将它们与应⽤程序⼀起打包,以便将代码分发到Spark集群。为此,创建⼀个包含代码及其依赖项的程序集jar(或“uber”jar)。sbt和Maven都有汇编插件。创建程序集jar时,将Spark和Hadoop列为提供的依赖项;这些依赖项不需要绑定,因为它们是由集群管理器在运⾏时提供的。⼀旦有了⼀个组装好的jar,就可以在传递jar时调⽤bin/spark提交脚本,如图所⽰。对于Python,可以使⽤spark-submit 的--py-files 参数增加.py 、.zip 或.egg  ⽂件与应⽤程序⼀块被分发。如果依赖多个Python⽂件,建议将它们打包到.zip 或中.egg 。
使⽤spark submit 启动应⽤程序
捆绑⽤户应⽤程序后,可以使⽤bin/spark-submit提交脚本启动它。此脚本负责使⽤Spark及其依赖项设置路径,并且可以⽀持Spark⽀持的不同群集管理器和部署模式:
./bin/spark-submit \
--class <main-class> \
--master <master-url> \
口边--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
spark-submit 参数详解
pasco在将项⽬打包之后,可能需要将其提交到⼤数据平台上去跑,这个时候就涉及到脚本处理。这⾥主要是有关spark的运⾏任务…⼀些常⽤的提交参数配置如下所⽰:
参数名
简介class
spark程序的主类,仅针对 java 或 scala 应⽤,注意⽤  全包名+类名name 应⽤程序的名称
master 与deploy-mode合起来表名程序提交到哪个资源管理框架,以何种⽅式部署。
表⽰要连接的集群管理器,可 以 是 spark://host:port、mesos://host:port、yarn、yarn-cluster、
yarn-client、local。其中local和local[K].这种是本地run的模式,不会提交到YARN,便于测试使⽤。这
两者之间的区别,带K的是多K个线程,不带K的是单个线程。如果是*的话就是尽可能多的线程数。
deploy-mode 在本地 (client) 启动 driver 或在 cluster 上启动,默认是client。client是指driver在提交任务的服务器上执
⾏,cluster是driver和exectutor都在集群内执⾏
conf
指定 spark 配置属性的值executor-memory
每个执⾏器(executor)的内存 ,以字节为单位。可以使⽤后缀指定更⼤的单位,⽐
如“512m”(512MB),或“15g”(15GB)。默认是1G,最⼤不超过30G,yarn模式下其内存加
上container要使⽤的内存(默认值是1G)不要超过NM可⽤内存,不然分配不到container来运⾏
executor
executor-cores 每个执⾏器(executor)的核数 ,即单个executor能并发执⾏task数,根据job设置。在yarn或者standalone下使⽤。Spark on Yarn 默认为 1,推荐值2-16;standalone 默认为 worker 上所有可⽤的 core
Executor-memoryOverheadM 设置执⾏器的堆外内存 ,具体的设置⽅法可以看之后的spark调优⽅法.执⾏器的内存=executor-memory+Executor-overheadMemory
driver-memory 驱动器(Driver)进程使⽤的内存量 (例如:1000M,5G)。以字节为单位。可以使⽤后缀指定更⼤的单位,⽐如“512m”(512MB),或“15g”(15GB)。默认是1G,推荐值2-6G,不宜太⼤
driver-cores驱动器(Driver)的核数 ,默认是1。在 yarn 或者 standalone 下使⽤
driver-memoryOverheadM 设置driver的堆外内存 ,具体的设置⽅法可以看之后的spark提交参数详解。driver的内存=driver-memory+driver-overheadMemory
易说堂
num-executors 设置执⾏器(executor)的数量;默认为2。在 yarn 下使⽤。但是⽬前CDH和FusionInsight都⽀持动态分配(dynamic allocat)模式。在这种模式下,⽆论怎么设置num-executors其实都会被忽略的,
queue 执⾏队列池;通常⽣产环境都会为特定的租户分配资源池。这个参数便是⽤于指定跑批租户资源池名称的。
Jars ⽤逗号分隔的本地 jar 包,指定本次程序(Driver 和 executor)依赖的jar包。需要上传并放到应⽤的CLASSPATH中的JAR包的列表。如果应⽤依赖于少量第三⽅JAR包,可以把他们放在这个参数⾥,有两种⽅式:
1、把依赖包打⼊执⾏程序包,这样会造成包体较⼤,每次打包上传耗时间表达;
2、不打⼊依赖包,把依赖包提前传到服务器,再通过jars指令指出依赖包的⽂件路径
⼀种常见的部署⽅法是从与worker节点物理位置相同的⽹关机提交应⽤程序。在此设置中,客户端模式是合适的。在客户端模式下,驱动程序直接在spark submit进程中启动,spark submit进程充当集群的客户端。应⽤程序的输⼊和输出连接到控制台。因此,该模式特别适⽤于涉及REPL的应⽤(例如Spark shell)。
或者,如果您的应⽤程序是从远离部署worker节点机器的机器上提交(例如,在本地笔记本电脑上),则通常使⽤cluster模式来最⼩化驱动程序和执⾏程序之间的⽹络延迟。⽬前,在独⽴集群模式中,不⽀持Python应⽤程序的cluster模式。
konaka对于Python应⽤程序,只需在<application jar>⽽不是jar的位置传递⼀个.py⽂件,然后使⽤ --py-files参数将Python.zip、.egg或.py⽂件添加到搜索路径。
以下是⼀些常见选项的⽰例:
# 本地运⾏应⽤程序,8核
./bin/spark-submit \
--class org.amples.SparkPi \
--master local[8] \
/path/to/examples.jar \
100
# 在Spark独⽴群集上以客户端部署模式运⾏
./bin/spark-submit \
--class org.amples.SparkPi \
--master spark://207.184.161.138:7077 \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
# 在Spark独⽴集群上以集群部署模式运⾏
./bin/spark-submit \
--class org.amples.SparkPi \
-
-master spark://207.184.161.138:7077 \
--deploy-mode cluster \
--supervi \
六级听力技巧--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
# 在YARN上以cluster模式运⾏
阿德莱德大学
export HADOOP_CONF_DIR=XXX
./bin/spark-submit \
--class org.amples.SparkPi \
-
-master yarn \
--deploy-mode cluster \  # can be client for client mode
--executor-memory 20G \
--num-executors 50 \
/path/to/examples.jar \
1000
# 在Spark独⽴集群上运⾏python脚本
./bin/spark-submit \
--master spark://207.184.161.138:7077 \
examples/src/main/python/pi.py \
1000
alia# 以集群部署模式在Mesos集群上运⾏
./bin/spark-submit \
--class org.amples.SparkPi \
--master mesos://207.184.161.138:7077 \
--deploy-mode cluster \
--supervi \
--executor-memory 20G \
--total-executor-cores 100 \
path/to/examples.jar \
1000
# 以集群部署模式在Kubernetes集群上运⾏
.考研现场确认
/bin/spark-submit \
--class org.amples.SparkPi \
--master k8s://ww:443 \
--deploy-mode cluster \
--executor-memory 20G \
--num-executors 50 \
path/to/examples.jar \
1000
yarn-client、yarn-cluster
Yarn是hadoop⾃带的集群管理器,默认情况下不⽤⼿动启动。与Spark⽀持的其他集群管理器(其中在--master 参数中指定了主服务器的地址)不同,在YARN模式下,ResourceManager的地址是从Hadoop配置中提取的。因此,--master参数为yarn。另外Spark on YARN ⼜分为client模式和cluster
模式。
具体两者之间区别见另⼀⽚⽂章:
这两种模式,最关键的是Spark Application运⾏时Driver所在的节点不同。
yarn-client⽤于学习及测试,开发不⽤,因为driver运⾏在本地客户端,负责调度application,会与yarn集群产⽣⼤量的⽹络通信,从⽽导致⽹卡流量激增。好处在于,应⽤程序运⾏结果会在客户端显⽰,直接执⾏时,本地可以看到所有的log,⽅便调试。
yarn-cluster⽤于⽣产环境,因为driver运⾏在YARN集群NodeManager中,没有⽹卡流量激增的问题,缺点在于调试不⽅便,本地⽤spark-submit提交之后,看不到log,应⽤的运⾏结果也不能在客户端显⽰,查看不⽅便。
格式:
./bin/spark-submit --ur.Class --master yarn --deploy-mode cluster [options] <app jar> [app options]
例如
./bin/spark-submit --class org.amples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
--queue thequeue \
examples/jars/spark-examples*.jar \
10
如果要在client模式下启动Spark应⽤程序,基本类似,但需要将cluster替换为client。下⾯显⽰如何在client模式下运⾏spark shell:
./bin/spark-shell \
--master yarn \
--deploy-mode client
添加其他jars
在cluster模式下,驱动程序运⾏在与客户端不同的计算机上,因此SparkContext.addJar⽂件对于客户端本地的⽂件,将⽆法开箱即⽤,为了使客户端上的⽂件可供SparkContext.addJar使⽤,在launch命令中需要包含--jars选项。
./bin/spark-submit --class my.main.Class \
--master yarn \
presidential
--deploy-mode cluster \
--jars my-other-jar.jar,my-other-other-jar.jar \
my-main-jar.jar \
app_arg1 app_arg2
提交的脚本⽰例
## yarn、client
spark-submit \
--master yarn \
--deploy-mode client \
/home/hadoop/test.py
## yarn、cluster、输⼊参数
spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
-
-executor-memory 2g \
--executor-cores 2 \
--queue prod \
--jars /home/hadoop/mysql-connector-java-8.0.21.jar,/home/hadoop/elasticarch-spark-20_2.11-6.4.1.jar \
/home/hadoop/test2.py 202012 dd_dksr_hz_test IS_SUC
参考:

本文发布于:2023-07-22 21:56:51,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/185622.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:XForms介绍
下一篇:Advanced Materials
标签:程序   提交   集群   模式   依赖
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图