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

相关推荐
baopixiaoz6 分钟前
AI量化策略师|Web3 量化交易研究员
大数据·人工智能·python·区块链
IT古董8 分钟前
【WMS学习笔记系列】01-需求分析
大数据·数据库
成长之路51421 分钟前
【数据集】MD&A管理层讨论与分析文本(2001-2025年)
大数据
Mico1840 分钟前
麒麟v10-MySQL InnoDB Cluster 完整部署与全场景验证(从入门到精通)
数据库·mysql
杨云龙UP1 小时前
生产环境MySQL多实例XtraBackup全量备份与rsync异地自动传输实践
linux·运维·数据库·mysql·xtrabackup·主从复制·备份恢复
会编程的吕洞宾2 小时前
MySQL 慢查询从5秒到50毫秒:索引失效六大场景定位与实战调优
数据库·mysql
浅念-2 小时前
MySQL 索引底层完整详解|磁盘Page|B+树推导|聚簇非聚簇索引|索引SQL操作
大数据·数据库·b树·sql·mysql·面试·职场和发展
小马过河R2 小时前
数据仓库入门:是什么、怎么做、和数据库有什么区别?
大数据·数据库·数据仓库·架构·驾驭工程·fde
leisoo80972 小时前
涨停板次日表现因子怎么挖掘本地化Python全流程实战
大数据·人工智能·python
Mico182 小时前
Percona Toolkit 3.5.7 完整实战笔记(从入门到精通)
mysql