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

相关推荐
冒泡的肥皂12 分钟前
说下数据存储
数据库·后端·mysql
2501_9335090733 分钟前
无锡制造企税惠防错指南:知了问账帮守政策红利线
大数据·人工智能·微信小程序
F36_9_42 分钟前
如何在沟通不畅导致误解后进行修复
大数据
青云交44 分钟前
Java 大视界 -- 基于 Java 的大数据实时数据处理在工业互联网设备协同制造中的应用与挑战
flink·spark·工业互联网·预测性维护·实时数据处理·java 大数据·设备协同制造
BullSmall1 小时前
MySQL全面安全加固实战指南
mysql·安全·adb
数字化脑洞实验室1 小时前
智能决策系统落地后如何进行数据集成与安全保障?
大数据
码河漫步1 小时前
win11安装mysql社区版数据库
数据库·mysql
Wang's Blog1 小时前
MySQL: 存储引擎深度解析:Memory与Federated的特性与应用场景
数据库·mysql
员大头硬花生2 小时前
九、InnoDB引擎-MVCC
数据库·sql·mysql
星光一影3 小时前
基于SpringBoot与Vue的海外理财系统设计与实现
vue.js·spring boot·后端·mysql·node.js·html5