Spark 调优汇总

本文深入探讨Spark调优,包括资源分配、并行度、代码优化、内存管理和shuffle参数等方面,旨在提升Spark应用性能。通过合理设置executor核心与内存,调整并行度,以及利用广播变量和map-side预聚合减少shuffle开销,实现更高效的Spark作业执行。
摘要由CSDN通过智能技术生成

 

阅读文本大概需要 9 分钟。

 

之前的两篇文章

Spark 调优一瞥 | shuffle 调优

Spark 的 数据本地化

分别讲了 shuffle 的参数调优和数据本地化的调优。

本文将从以下几个方面来介绍一下 Spark 的调优。

  1. 资源调优
  2. 并行度调优
  3. 代码调优
  4. 数据本地化
  5. 内存调优
  6. shuffle 参数
  7. 堆外内存
  8. 数据倾斜 (内容较多, 下篇文章见)

 

资源调优

 

在部署集群的时候,指定资源分配的默认参数,需要在 conf 下面的 spark-env.sh 里面指定

SPARK_WORK_CORES 指定每个 worker 分配的核数

SPARK_WORK_MEMORY 指定每个 worker 分配的内存

SPARK_WORK_INSTANCES 指定每台机器启动的 worker 数量

在提交 APPLICATION 的时候,给当前的任务分配更多的资源,在 spark-submit 命令后面指定以下参数:

--executor-cores

--executor-memory

--total-executor-cores

当然也可以在配置文件 Spark-default.conf 里面配置

spark.executor.cores

spark.executor.memory

spark.max.cores

动态的分配资源

spark.dynamicAllocation.enabled true 开启动态资源分配。

并行度优化

如果读取的数据在 HDFS 上,降低 Block 的大小,相当于提高了 RDD 中 partition 的个数。

也可以直接加上参数 numPartitions 来手动的给定分区数。

也可以使用 repartitions / coalesce 算子来改变分区。

在使用 reduceByKey / groupByKey / join 的时候,也可以加上 numPartit

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值