Spark3.0核心调优参数小总结

2021-12-28 16:35:52 浏览数 (1)

基础配置

spark.executor.memory

指定Executor memory,也就是Executor可用内存上限

spark.memory.offHeap.enabled

堆外内存启用开关

spark.memory.offHeap.size

指定堆外内存大小

spark.memory.fraction

堆内内存中,Spark缓存RDD和计算的比例

spark.memory.storageFraction

Spark缓存RDD的内存占比,相应的执行内存比例为1 - spark.memory.storageFraction

spark.local.dir

Spark指定的临时文件目录

spark.cores.max

一个Spark程序能够给申请到的CPU核数

spark.executor.cores

单个Executor的核心数

spark.task.cpus

单个task能够申请的cpu数量

spark.default.parallelism

默认并行度

spark.sql.shuffle.partitions

Shuffle过程中的Reducer数量

Shuffle配置

spark.shuffle.file.buffer

设置shuffle write任务的bufferedOutputStream的缓冲区大小。将数据写入磁盘文件之前,将其写入缓冲区,然后在将缓冲区写入磁盘后将其填充。

spark.reducer.maxSizeInFlight

该参数用于设置Shuffle read任务的buff缓冲区大小,该缓冲区决定一次可以拉取多少数据。

spark.shuffle.sort.bypassMergeThreshold

当ShuffleManager为SortShuffleManager时,如果shuffle read task的数量小于这个阈值(默认是200),则shuffle write过程中不会进行排序操作,而是直接按照未经优化的HashShuffleManager的方式去写数据,但是最后会将每个task产生的所有临时磁盘文件都合并成一个文件,并会创建单独的索引文件。

Spark SQL配置

spark.sql.adaptive.enabled

Spark AQE开启开关

spark.sql.adaptive.coalescePartitions.enabled

是否开启合并小数据分区,默认开启

spark.sql.adaptive.advisoryPartitionSizeInBytes

倾斜数据分区拆分,小数据分区合并优化时,建议的分区大小

spark.sql.adaptive.coalescePartitions.minPartitionNum

合并后最小的分区数

spark.sql.adaptive.fetchShuffleBlocksInBatch

是否批量拉取blocks,而不是一个个的去取。给同一个map任务一次性批量拉取blocks可以减少IO提高性能

spark.sql.adaptive.skewJoin.enabled

自动倾斜处理,处理sort-merge join中的倾斜数据

spark.sql.adaptive.skewJoin.skewedPartitionFactor

判断分区是否是倾斜分区的比例。

当一个 partition 的 size 大小大于该值(所有 parititon 大小的中位数)且大于spark.sql.adaptive.skewedPartitionSizeThreshold,或者 parition 的条数大于该值(所有 parititon 条数的中位数)且大于 spark.sql.adaptive.skewedPartitionRowCountThreshold,才会被当做倾斜的 partition 进行相应的处理。默认值为 10

spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes

判断是否倾斜分区的最低阈值。

0 人点赞