Spark常用参数

分类属性名称实践默认值作用中文含义
queuedefault执行队列
spark.driver.extraClassPath--class(none)包名附加到驱动程序的类路径之前的类路径条目。
注意:在客户端模式下,这个配置不能SparkConf 直接在你的应用程序中设置,因为此时驱动程序 JVM 已经启动。相反,请通过--driver-class-path命令行选项或在您的默认属性文件中进行设置。
Application Propertiesspark.app.name(none)应用程序名称,也可在程序内设置您的应用程序的名称。这将出现在 UI 和日志数据中。
spark.master--master(none)设置主节点 URL 的参数
支持:
local: 本地机器。
spark://host:port:远程Spark 单机集群,需要指定端口。
yarn:yarn 集群
要连接的集群管理器,查看允许的主URL的列表。
spark.submit.deployMode cluster(none)"允许选择是否在本地(使用 client 选项)启动 Spark 驱动程序,
或者在集群内(使用 cluster 选项)的其中一台工作机器上启动。"
Spark驱动程序的部署模式,“客户端”或“集群”,这意味着在集群内部的一个节点上本地(“客户端”)或远程(“集群”)启动驱动程序。
spark.driver.maxResultSize5g 1g代表每个Spark的action(例如collect)的结果总大小的限制,默认为1g。
如果总大小超过此限制,作业将被中止,如果该值较高可能会导致Driver发生OOM,因此用户需要根据作业实际情况设置适当值。
每个 Spark 操作(例如收集)的所有分区的序列化结果的总大小限制(以字节为单位)。应至少为 1M, 0 表示无限制。如果总大小超过此限制,作业将被中止。具有上限可能会导致驱动程序中的内存不足错误(取决于 spark.driver.memory 和 JVM 中对象的内存开销)。设置适当的限制可以保护驱动程序免受内存不足错误的影响。
spark.driver.memory 16g1g管理多少内存,换言之就是为当前应用分配了多少内存。用于驱动程序进程的内存量,即初始化 SparkContext 的位置,与具有大小单位后缀(“k”、“m”、“g”或“t”)的 JVM 内存字符串格式相同(例如512m,2g) .
注意:在客户端模式下,这个配置不能SparkConf 直接在你的应用程序中设置,因为此时驱动程序 JVM 已经启动。相反,请通过--driver-memory命令行选项或在您的默认属性文件中进行设置。
spark.executor.memory25g 1g设置executor执行时所需的memory 每个节点上占用的内存。每一个节点可使用内存
表示分配给每个executor的内存,默认是1G。
每个执行程序进程使用的内存量,格式与带有大小单位后缀(“k”、“m”、“g”或“t”)(例如512m,2g)的 JVM 内存字符串相同。
spark.executor.memoryOverheadFactor10240executorMemory
* spark.executor。
memoryOverheadFactor,最少384个
设置堆外内存的参数除非另有说明,否则每个执行程序进程要分配的额外内存量,以 MiB 为单位。这是占 VM 开销、实习字符串、其他本机开销等的内存。这往往会随着执行程序的大小(通常为 6-10%)而增长。YARN 和 Kubernetes 目前支持此选项。
注意:额外内存包括 PySpark 执行程序内存(spark.executor.pyspark.memory未配置时)和运行在同一容器中的其他非执行程序进程使用的内存。容器到运行 executor 的最大内存大小由 、 和spark.executor.memoryOverhead之 spark.executor.memory和spark.memory.offHeap.size决定 spark.executor.pyspark.memory。
Spark SQLspark.sql.shuffle.partitions2000200Spark sql默认shuffle分区个数为200,参数由
spark.sql.shuffle.partitions控制,此参数只能控制Spark sql、DataFrame、
DataSet分区个数。不能控制RDD分区个数
为联接或聚合打乱数据时要使用的默认分区数。注意:对于结构化流,在从同一检查点位置重新启动查询之间无法更改此配置。
Dynamic Allocationspark.dynamicAllocation.enabledTRUEFALSE是否开启动态资源配置,根据工作负载来衡量是否应该增加或减少executor,默认false是否使用动态资源分配,它根据工作负载向上和向下缩放在此应用程序中注册的执行器数量。有关更多详细信息,请参阅 此处的说明。
这需要spark.shuffle.service.enabled或被 spark.dynamicAllocation.shuffleTracking.enabled设置。以下配置也相关: spark.dynamicAllocation.minExecutors、spark.dynamicAllocation.maxExecutors和 spark.dynamicAllocation.initialExecutors spark.dynamicAllocation.executorAllocationRatio
spark.dynamicAllocation.initialExecutors4spark.
dynamicAllocation.
minExecutors
动态分配初始executor个数默认值=spark.dynamicAllocation.minExecutors如果启用了动态分配,则要运行的初始执行程序数。
如果设置了`--num-executors`(或`spark.executor.instances`)并且大于此值,它将用作执行器的初始数量。
spark.dynamicAllocation.maxExecutors80infinity(无穷)最大Executro数目如果启用了动态分配,则执行器数量的上限。
spark.dynamicAllocation.minExecutors100最少的Excutor数目如果启用了动态分配,则执行者数量的下限。
Execution Behaviorspark.executor.cores51 在 YARN 模式下,worker 上的所有可用核心在独立和 Mesos 粗粒度模式下。表示分配给每个executor的core数即核数,在spark on yarn模式下默认是1每个执行器上使用的核心数。在独立模式和 Mesos 粗粒度模式下,有关更多详细信息,请参阅 此说明。
spark.default.parallelism对于 和 之类的分布式 shuffle 操作reduceByKey,join父 RDD 中的最大分区数。对于parallelize 没有父 RDD 的操作,它取决于集群管理器:
本地模式:本地机器上的核心数
Mesos 细粒度模式:8
其他:所有执行器节点上的核心总数或2,以较大者为准
RDD任务的默认并行度,Spark中所谓的并行度是指RDD中的分区数,即RDD中的Task数。
当初始RDD没有设置分区数(numPartitions或numSlice)时,则分区数采用spark.default.parallelism的取值。
当用户未设置时,由join、reduceByKey和并行化等转换返回的rdd中的默认分区数。
Compression and Serializationspark.kryoserializer.buffer.max128m64m
设置Kryo序列化缓冲区大小
除非另有说明,否则 Kryo 序列化缓冲区的最大允许大小,以 MiB 为单位。这必须大于您尝试序列化的任何对象,并且必须小于 2048m。如果您在 Kryo 中遇到“超出缓冲区限制”异常,请增加此值。
Networkingspark.rpc.askTimeout500spark.network.timeoutspark 默认 ask 请求操作超时时间RPC 请求操作在超时前等待的持续时间。
spark.network.maxRemoteBlockSizeFetchToMem10m200m这个参数作用是在reduce task读取map task block时放入内存中的最大值;
默认是没有限制全放内存
当块的大小高于此阈值(以字节为单位)时,远程块将被提取到磁盘。这是为了避免一个巨大的请求占用过多的内存。请注意,此配置将影响 shuffle 提取和块管理器远程块提取。对于启用了外部 shuffle 服务的用户,此功能仅在外部 shuffle 服务至少为 2.3.0 时才能使用。
Shuffle Behaviorspark.shuffle.accurateBlockThreshold10m100 * 1024 * 1024以字节为单位的阈值,高于该阈值可准确记录HighlyCompressedMapStatus中Shuffle块的大小。这有助于通过避免在获取shuffle块时低估shuffle块大小来防止OOM。以字节为单位的阈值,在该阈值之上,HighlyCompressedMapStatus 中的 shuffle 块的大小被准确记录。这有助于通过避免在获取 shuffle 块时低估 shuffle 块大小来防止 OOM。
Schedulingspark.cores.max(not set)这个参数决定了在Standalone和Mesos模式下,一个Spark应用程序所能申请的CPU Core的数量。这个参数对Yarn模式不起作用,YARN模式下,资源由Yarn统一调度管理,一个应用启动时所申请的CPU资源的数量由另外两个直接配置Executor的数量和每个Executor中core数量的参数决定。在yarn模式下可以直接通过参数--num-executors指定该应用所需的executor数量当以“粗粒度”共享模式在独立部署集群或 Mesos 集群上运行时,从整个集群(而不是从每台机器)请求应用程序的最大 CPU 内核数。如果未设置,默认将 在 Spark 的独立集群管理器上,或在 Mesos 上无限(所有可用内核)。 spark.deploy.defaultCores
spark.scheduler.listenerbus.eventqueue.capacity2000010000spark事件监听队列容量,默认10000,必须为正值,增加可能会消耗更多内存事件队列的默认容量。Spark 将首先尝试使用 `spark.scheduler.listenerbus.eventqueue.queueName.capacity` 指定的容量来初始化事件队列。如果未配置,Spark 将使用此配置指定的默认容量。请注意,容量必须大于 0。如果侦听器事件被丢弃,请考虑增加值(例如 20000)。增加此值可能会导致驱动程序使用更多内存。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值