Spark性能调优——【笔记一】

本文详细介绍了Spark性能调优的各个方面,包括最优资源配置、RDD优化、并行度调节、广播大变量、Kryo序列化、本地化等待时长的调整。通过合理设置Spark参数,如Executor数量和核心数、RDD持久化、并行度和广播变量,可以显著提升Spark作业的运行效率。此外,还讨论了算子调优,如mapPartitions、foreachPartition以及reduceByKey的本地聚合,以及Shuffle调优策略,如调节缓冲区大小和重试次数。最后,对JVM调优进行了探讨,涉及cache内存占比、Executor堆外内存和连接等待时长的调整。
摘要由CSDN通过智能技术生成

Spark性能调优——【笔记一】

[课程链接]——https://www.bilibili.com/video/av54322051?p=50

一、常见性能调优

1.最优资源配置

名称 说明
–num-executors 配置executor的数量,数量增加,同时执行的task数量也增加,并行度增加
–driver-memory 配置Driver内存(影响不大)
–executor-memory 配置每个Executor的内存大小
–executor-cores 配置每个Executor的CPU core的数量

    尽量将任务分配的资源调节到可以使用的资源的最大限度。
    --num-executors为Executor的数量;–executor-cores为每个Executor中core的个数,一个core(即Executor中一个CPU core)执行一个task,因此有并发度=Executor数目 * 每个Executor核数 = num-executors * executor-cores = Spark程序同时执行Task的数目
    总内存 = executor-memory * num-executors

名称 解析
增加Executor个数 在资源允许的情况下,增加Executor的个数,可以提高task的并行度
增加每个Executor的CPU core个数 在资源允许的情况下,增加每个Executor的CPU core个数,可以提高执行task的并行度
增加每个Executor的内存量 在资源运行的情况下,增加每个Executor的内存量后,1.可以缓存更多数据(即对RDD进行cache),写入磁盘的数据相应减少,甚至不写入,减少了可能的磁盘IO;2.为Shuffle提供更多内存,有更多的空间存放reduce端拉取的数据;3.为Task执行提供更多的内存,避免频繁GC

2.RDD优化

2.1 RDD复用

    要避免相同算子和计算逻辑之下对RDD进行重复计算,如:
RDD复用.png

2.2 RDD持久化

    必须对多次使用的RDD进行持久化,通过持久化将公共的RDD数据缓存到内存/磁盘中,之后对于公共RDD的计算都会直接从内存/磁盘中获取数据;
    对于RDD的持久化有两点需要说明:
      a.RDD的持久化是可以进行序列化的,当内存无法将RDD数据进行完整存放时,可以考虑用序列化的方式减小数据体积,将数据完整的存储在内存中;
      b.对数据的可靠性要求很高,并且内存充足,可使用副本机制对RDD数据进行持久化

2.3 RDD尽可能早的进行filter操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值