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

相关推荐
王景程1 分钟前
升级Pixy CMUcam5 固件
mysql·android runtime
管理大亨12 分钟前
Canal:企业数据实时同步的利器
数据库·mysql
蒲公英源码36 分钟前
AI智慧教育平台架构设计与实现方案,基于Jdk17+SpringBoot3AI智慧教育平台
java·人工智能·mysql·jdk
i***27951 小时前
Oracle分页sql
数据库·sql·oracle
i***17181 小时前
mysql如何发现慢查询sql
数据库·sql·mysql
v***55341 小时前
MySQL 中如何进行 SQL 调优
android·sql·mysql
阿宁又菜又爱玩1 小时前
MySQL基础学习
数据库·学习·mysql
u***B7922 小时前
Navicat for MySQL下载安装教程
数据库·mysql
白日做梦Q2 小时前
Navicat for MySQL 详细使用指南:命令行操作与界面操作双视角全解析
大数据·mysql·adb·数据库开发
l***74942 小时前
Mysql中使用sql语句生成雪花算法Id
sql·mysql·算法