Spark调优的几个思想或者角度

Spark调优的三个角度

  • Spark自身的性能红利
  • 省数据处理、拖Shuffle操作
  • 避免单机思维

一、Spark自身的性能红利

Tungsten钨丝计划

  • Java Unsafe API开辟堆外内存
    • 内存占用估算更精确
    • 不用反复执行垃圾回收

AQE (Adaptive Query Execution)

Spark3.0之前:编译时基于规则遍历AST优化逻辑计划

AQE:周期性动态调整前面的逻辑计划 spark.sql.adaptive.enabled = True

  • 自动分区合并
    • 自动合并比较小的分区,减少CPU调度开销
  • 数据倾斜
    • 自动加盐
  • Join策略调整
    • 自动使用Broadcast Join

二、省数据处理、拖Shuffle操作

  • 减少重复或者没必要的shuffle action,比如distinct
  • 尽量避免或者向后移动shuffle,越靠后要处理的数据越少,落盘和分发越少

三、避免单机思维

Spark的配置项

Driver负责分布式调度,调优空间有限,围绕Executor展开配置。

硬件资源

硬件资源

  • CPU
    • 并行度:数据分片数量
    • 并行计算任务:数据并行计算数量
  • 内存
    • 配置项
    • 堆内外平衡
      • (指针与偏移地址处理不定长数据)对于需要处理的数据集,如果数据模式比较扁平,而且字段多是定长数据类型,就更多地使用堆外内存。相反地,如果数据模式很复杂,嵌套结构或变长字段很多,就更多采用 JVM 堆内内存会更加稳妥。
  • 磁盘
    • 缓存密集还是计算密集(机器学习还是OLAP统计)
    • 是否RDD缓存压缩spark.rdd.compress来序列化等,选择字节还是对象方式

Shuffle

落盘缓冲的次数spark.shuffle.file.buffer。减少IO

Spark SQL

AQE分区合并

AQE自动处理数据倾斜

JOIN策略调整

  • Shuffle Join to Broadcast Join
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值