spark-sql提交参数详解整理

本文详细解析了Spark SQL任务提交时的各种参数,包括master、deploy-mode、executor-memory、executor-cores等,旨在确保任务在正确环境中高效运行。通过设置合理的参数,可以优化资源利用,提升Spark SQL作业的执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#1. spark任务提交
当SPARK-SQL开发完成后需要将其提交到大数据平台上去跑,提交的时候需要对要使用的资源参数进行设置,目的:
a. 让任务在正确的环境下运行
b. 根据任务自身情况,设置合理参数,提高运行效率

#2. 设置参数说明
##2.1 class参数
参数说明:spark程序的主类,仅针对 java 或 scala 应用,注意用 全包名+类名

##2.2 name参数
参数说明:应用程序的名称,可以在yarn上面查询定位对应的运行程序

##2.3 master参数
参数说明:与deploy-mode合起来表明程序提交到哪个资源管理框架,以何种方式部署。表示要连接的集群管理器,可以是:
spark://host:port
mesos://host:port
yarn
yarn-cluster
yarn-client
local
其中local和local[K].这种是本地run的模式,不会提交到YARN,便于测试使用。这两者之间的区别,带K是多K个线程,不带K的是单个线程。如果是*的话就是尽可能多的线程数。

##2.4 deploy-mode参数
参数说明:在本地 (client) 启动 driver 或在 cluster 上启动,默认是client。
client是指driver在提交任务的服务器上执行,cluster是driver和exectutor都在集群内执行

##2.5 executor-memory参数
参数说明:每个执行器(executor)的内存 ,以字节为单位。可以使用后缀指定更大的单位,比如“512m”(512MB),或“15g”(15GB)。默认是1G,最大不超过30G,yarn模式下其内存加上container要使用的内存(默认值是1G)不要超过NM可用内存,不然分配不到container来运行executor

##2.6 executor-cores参数
参数说明:每个执行器(executor)的核数 ,即单个executor能并发执行task数,根据job设置。在yarn或者standalone下使用。Spark on Yarn 默认为 1,推荐值2-16;standalone 默认为 worker 上所有可用的 core

##2.7 Executor-memoryOverheadM参数
参数说明:设置执行器的堆外内存 ,具体的设置方法可以看之后的spark调优方法.执行器的内存=executor-memory+Executor-overheadMemory

##2.8 driver-memory参数
参数说明:驱动器(Driver)进程使用的内存量 (例如:1000M,5G)。以字节为单位。可以使用后缀指定更大的单位,比如“512m”(512MB),或“15g”(15GB)。默认是1G,推荐值2-6G,不宜太大

##2.9 driver-cores参数
参数说明:驱动器(Driver)的核数 ,默认是1。在 yarn 或者 standalone 下使用

##2.10 packages参数
参数说明:包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标

##2.11 exclude-packages参数
参数说明:为了避免冲突 而指定不包含的 package

##2.12 repositories参数
参数说明:远程 repository

##2.13 conf参数
参数说明:PROP=VALUE 指定 spark 配置属性的值,
例如:
–conf spark.executor.extraJavaOptions=“-XX:MaxPermSize=256m”

##2.14 properties-file参数
参数说明:加载的配置文件,默认为 conf/spark-defaults.conf

##2.15 driver-java-options参数
参数说明:传给 driver 的额外的 Java 选项

##2.16 driver-library-path参数
参数说明:传给 driver 的额外的库路径

##2.17 driver-class-path参数
参数说明:传给 driver 的额外的类路径

##2.18 total-executor-cores参数
参数说明:所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用

##2.19 driver-memoryOverheadM参数
参数说明:设置driver的堆外内存 ,具体的设置方法可以看之后的spark提交参数详解。driver的内存=driver-memory+driver-overheadMemory

##2.20 num-executors参数
参数说明:设置执行器(executor)的数量;默认为2。在 yarn 下使用。但是目前CDH和FusionInsight都支持动态分配(dynamic allocat)模式。在这种模式下,无论怎么设置num-executors其实都会被忽略的

##2.21 queue参数
参数说明:执行队列池;通常生产环境都会为特定的租户分配资源池。这个参数便是用于指定跑批租户资源池名称的。

##2.22 Jars参数
参数说明:用逗号分隔的本地 jar 包,指定本次程序(Driver 和 executor)依赖的jar包。需要上传并放到应用的CLASSPATH中的JAR包的列表。如果应用依赖于少量第三方JAR包,可以把他们放在这个参数里,有两种方式:
a. 把依赖包打入执行程序包,这样会造成包体较大,每次打包上传耗时间表达;
b. 不打入依赖包,把依赖包提前传到服务器,再通过jars指令指出依赖包的文件路径

#3. 设置示例
spark-submit
–name “任务名称” \ //应用程序的名称,可以在yarn上面查询定位
–class 应用程序主类名 \ //应用程序的主类,仅针对 java 或 scala 应用
–master yarn \ //与deploy-mode合起来表明程序提交到哪个资源管理框架,以何种方式部署,提交任务到哪里执行,例如 spark://host:port,yarn,local
–deploy-mode cluster \ //在本地(client)启动driver或在cluster上启动,默认是client
–driver-memory 8g \ //Driver内存,默认 1G
–executor-memory 6g \ //每个 executor 的内存,默认是1G
–executor-cores 4 \ //每个 executor 的核数。在yarn或者standalone下使用
–num-executors 60 \ //启动的 executor 数量。默认为2。在 yarn 下使用
–queue root.users.bzbd_batch \ //执行队列池;通常生产环境都会为特定的租户分配资源池。这个参数便是用于指定跑批租户资源池名称的
–conf spark.hadoop.hive.exec.dynamic.partition=true \ // 是否允许动态生成分区
–conf spark.hadoop.hive.exec.dynamic.partition.mode=nonstrict \ //是否容忍指定分区全部动态生成
–conf spark.hadoop.hive.exec.max.dynamic.partitions=100000 \ //动态生成的最多分区数
–conf spark.hadoop.hive.exec.max.dynamic.partitions.pernode=100000 \ //每个节点动态生成的最多分区数
–conf spark.sql.adaptive.enabled=true \ //是否开启调整partition功能,如果开启,spark.sql.shuffle.partitions设置的partition可能会被合并到一个reducer里运行。平台默认开启,同时强烈建议开启。理由:更好利用单个executor的性能,还能缓解小文件问题
–conf spark.sql.adaptive.shuffle.targetPostShuffleInputSize=100M \ //和spark.sql.adaptive.enabled配合使用,当开启调整partition功能后,当mapper端两个partition的数据合并后数据量小于targetPostShuffleInputSize时,Spark会将两个partition进行合并到一个reducer端进行处理。平台默认为67108864(64M),用户可根据自身作业的情况酌情调整该值。当调大该值时,一个reduce端task处理的数据量变大,最终产出的数据,存到HDFS上的文件也变大
–conf spark.sql.adaptive.maxNumPostShufflePartitions=10000 \ //当spark.sql.adaptive.enabled参数开启后,有时会导致很多分区被合并,为了防止分区过大,可以设置此参数,减少产生的文件数,增大单个文件大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海阔天空_81

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值