Spark常用参数

分类 属性名称 实践 默认值 作用 中文含义
queue default 执行队列
spark.driver.extraClassPath --class (none) 包名 附加到驱动程序的类路径之前的类路径条目。
注意:在客户端模式下,这个配置不能SparkConf 直接在你的应用程序中设置,因为此时驱动程序 JVM 已经启动。相反,请通过--driver-class-path命令行选项或在您的默认属性文件中进行设置。
Application Properties spark.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.maxResultSize 5g  1g 代表每个Spark的action(例如collect)的结果总大小的限制,默认为1g。
如果总大小超过此限制,作业将被中止,如果该值较高可能会导致Driver发生OOM,因此用户需要根据作业实际情况设置适当值。
每个 Spark 操作(例如收集)的所有分区的序列化结果的总大小限制(以字节为单位)。应至少为 1M, 0 表示无限制。如果总大小超过此限制,作业将被中止。具有上限可能会导致驱动程序中的内存不足错误(取决于 spark.driver.memory 和 JVM 中对象的内存开销)。设置适当的限制可以保护驱动程序免受内存不足错误的影响。
spark.driver.memory  16g 1g 管理多少内存,换言之就是为当前应用分配了多少内存。 用于驱动程序进程的内存量,即初始化 SparkContext 的位置,与具有大小单位后缀(“k”、“m”、“g”或“t”)的 JVM 内存字符串格式相同(例如512m,2g) .
注意:在客户端模式下,这个配置不能SparkConf 直接在你的应用程序中设置,因为此时驱动程序 JVM 已经启动。相反,请通过--driver-memory命令行选项或在您的默认属性文件中进行设置。
spark.executor.memory 25g  1g 设置executor执行时所需的memory 每个节点上占用的内存。每一个节点可使用内存
表示分配给每个executor的内存,默认是1G。
每个执行程序进程使用的内存量,格式与带有大小单位后缀(“k”、“m”、“g”或“t”)(例如512m,2g)的 JVM 内存字符串相同。
spark.executor.memoryOverheadFactor 10240 executorMemory
* 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 SQL spark.sql.shuffle.partitions 2000 200 Spark sql默认shuffle分区个数为200,参数由
spark.sql.shuffle.partitions控制,此参数只能控制Spark sql、DataFrame、
DataSet分区个数。不能控制RDD分区个数
为联接或聚合打乱数据时要使用的默认分区数。注意:对于结构化流,在从同一检查点位置重新启动查询之间无法更改此配置。
Dynamic Allocation spark.dynamicAllocation.enabled TRUE FALSE 是否开启动态资源配置,根据工作负载来衡量是否应该增加或减少executor,默认false 是否使用动态资源分配,它根据工作负载向上和向下缩放在此应用程序中注册的执行器数量。有关更多详细信息,请参阅 此处的说明。
这需要spark.shuffle.service.enabled或被 spark.dynamicAllocation.shuffleTracking.enabled设置。以下配置也相关: spark.dynamicAllocation.minExecutors、spark.dynamicAllocation.maxExecutors和 spark.dynamicAllocation.initialExecutors spark.dynamicAllocation.executorAllocationRatio
spark.dynamicAllocation.initialExecutors 4 spark.
dynamicAllocation.
minExecutors
动态分配初始executor个数默认值=spark.dynamicAllocation.minExecutors 如果启用了动态分配,则要运行的初始执行程序数。
如果设置了`--num-executors`(或`spark.executor.instances`)并且大于此值,它将用作执行器的初始数量。
spark.dynamicAllocation.maxExecutors 80 infinity(无穷) 最大Executro数目 如果启用了动态分配,则执行器数量的上限。
spark.dynamicAllocation.minExecutors 10 0 最少的Excutor数目 如果启用了动态分配,则执行者数量的下限。
Execution Behavior spark.executor.cores 5 1 在 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 Serialization spark.kryoserializer.buffer.max 128m 64m
设置Kryo序列化缓冲区大小
除非另有说明,否则 Kryo 序列化缓冲区的最大允许大小,以 MiB 为单位。这必须大于您尝试序列化的任何对象,并且必须小于 2048m。如果您在 Kryo 中遇到“超出缓冲区限制”异常,请增加此值。
Networking spark.rpc.askTimeout 500 spark.network.timeout spark 默认 ask 请求操作超时时间 RPC 请求操作在超时前等待的持续时间。
spark.network.maxRemoteBlockSizeFetchToMem 10m 200m 这个参数作用是在reduce task读取map task block时放入内存中的最大值;
默认是没有限制全放内存
当块的大小高于此阈值(以字节为单位)时,远程块将被提取到磁盘。这是为了避免一个巨大的请求占用过多的内存。请注意,此配置将影响 shuffle 提取和块管理器远程块提取。对于启用了外部 shuffle 服务的用户,此功能仅在外部 shuffle 服务至少为 2.3.0 时才能使用。
Shuffle Behavior spark.shuffle.accurateBlockThreshold 10m 100 * 1024 * 1024 以字节为单位的阈值,高于该阈值可准确记录HighlyCompressedMapStatus中Shuffle块的大小。这有助于通过避免在获取shuffle块时低估shuffle块大小来防止OOM。 以字节为单位的阈值,在该阈值之上,HighlyCompressedMapStatus 中的 shuffle 块的大小被准确记录。这有助于通过避免在获取 shuffle 块时低估 shuffle 块大小来防止 OOM。
Scheduling spark.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.capacity 20000 10000 spark事件监听队列容量,默认10000,必须为正值,增加可能会消耗更多内存 事件队列的默认容量。Spark 将首先尝试使用 `spark.scheduler.listenerbus.eventqueue.queueName.capacity` 指定的容量来初始化事件队列。如果未配置,Spark 将使用此配置指定的默认容量。请注意,容量必须大于 0。如果侦听器事件被丢弃,请考虑增加值(例如 20000)。增加此值可能会导致驱动程序使用更多内存。

你可能感兴趣的:(Spark,spark,jvm,大数据)