【大数据学习 | Spark调优篇】常用的shuffle优化

shuffle是一个涉及到CPU(序列化反序列化)、网络IO(跨节点数据传输)以及磁盘IO(shuffle中间结果落盘)的操作。

优化思路:

减少shuffle的数据量,减少shuffle的次数。

具体方式:

  • 能不shuffle的时候尽量不要shuffle数据,可以使用mapjoin广播变量broadcast);
  • 能用reduceByKey就不要用groupByKey,因为reducerByKey会在shuffle前进行本地聚合(map阶段进行预聚合combine),减少写出中间文件的个数,从而可以使在shuffle过程中减少磁盘IO;
  • spark2.0后已经没有HashShuffleManager,只有SortShuffleManager,SortShuffleManager内部有3种shuffle操作,可适应小中大集群。
  • 参数调节:如下

spark.reducer.maxSizeInFlight:reduce task的拉取缓存,默认48m

spark.shuffle.file.buffer:map task的写磁盘缓存,默认32k

spark.shuffle.io.maxRetries:拉取失败的最大重试次数,默认3次

spark.shuffle.io.retryWait:拉取失败的重试间隔,默认5s

相关推荐
思麟呀2 分钟前
MySQL表的约束
数据库·mysql
面向Google编程36 分钟前
从零学习Kafka:生产者压缩
大数据·kafka
罗超驿42 分钟前
9.深度剖析MySQL约束的工程设计:自增主键的分布式局限、外键约束的权衡,与CHECK的版本适配实践
数据库·mysql
jiayong231 小时前
MySQL 8.0 数据库恢复问题完整解决方案
数据库·mysql
workflower1 小时前
企业酝酿数智化内驱力
大数据·人工智能·设计模式·机器人·动态规划
Pushkin.1 小时前
新数仓建设方法论与实践指南-分层解耦驱动的数据仓库
大数据·数据仓库
@小柯555m1 小时前
MySql(正则表达式--电话号码格式校验)
数据库·sql·mysql·正则表达式
重生之小比特1 小时前
【MySQL 数据库】复合查询
android·数据库·mysql
Elastic 中国社区官方博客1 小时前
Elasticsearch:为 AI Agent builder 创建 skill plugin
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Data_Journal1 小时前
2026年十大数据集网站
大数据·开发语言·数据库·人工智能·python