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

相关推荐
Caspian Wren8 分钟前
通过Canal、Canal adapter将MySQL数据同步到ES
mysql·elasticsearch·adb
zmsofts12 分钟前
java面试必问14:MySQL 索引类型:从基础到优化,面试官给你点赞
java·mysql·面试
BizViewStudio19 分钟前
GEO vs SEO vs SEM:2026 年品牌流量获取的三元格局分析
大数据·运维·网络·人工智能·ai
TDengine (老段)19 分钟前
工业系统中的高级分析:超越工业实时数据库
大数据·数据库·人工智能·时序数据库·tdengine
JackSparrow41421 分钟前
使用Elasticsearch代替数据库like以加快查询的各种技术方案+实现细节
大数据·clickhouse·elk·elasticsearch·搜索引擎·postgresql·全文检索
iNgs IMAC25 分钟前
MySQL无法连接到本地localhost的解决办法2024.11.8
数据库·mysql·adb
tIzE TERV25 分钟前
mysql数据被误删的恢复方案
数据库·mysql
eRTE XFUN26 分钟前
mysql用户名怎么看
数据库·mysql
isNotNullX30 分钟前
数据分析指标有哪些?如何理解常见数据分析指标?
大数据·数据挖掘·数据分析