【大数据学习 | 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

相关推荐
搞科研的小刘选手8 小时前
【大数据方向专题研讨会】第三届大数据与数字化管理国际学术会议(ICBDDM 2026)
大数据·信息安全·数据挖掘·云计算·可视化·供应链·信息管理
小马爱打代码8 小时前
MySQL高可用与扩展:主从复制、读写分离、分库分表
服务器·数据库·mysql
IT策士8 小时前
第16篇 实战:用 Docker Compose 编排 WordPress 与 MySQL
mysql·docker·容器
j7~8 小时前
【MYSQL】 复合查询--详解(重点)
数据库·mysql·子查询·多表查询·自链接·合并查询
2601_959477918 小时前
Vatee平台平台运行稳定吗?
大数据·人工智能·安全
java_cj8 小时前
MySQL 8.0新特性详解:从隐藏索引到窗口函数全面解析
数据库·mysql·架构·开源
明夜之约8 小时前
Elasticsearch 深度解析:从倒排索引原理到亿级数据生产实战
大数据·elasticsearch·搜索引擎
garmin Chen8 小时前
Elasticsearch(1):Elasticsearch核心原理与基础操作总结
java·大数据·笔记·elasticsearch·搜索引擎·全文检索
humors2218 小时前
聊聊密码为啥会“白设”
大数据·运维·服务器·网络·网络安全
Sharewinfo_BJ8 小时前
Power BI 5月重磅更新:8大新功能全面提升数据分析效率
大数据·人工智能·数据分析