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

相关推荐
飞Link6 小时前
【MySQL】Linux(CentOS7)下安装MySQL8教程
linux·数据库·mysql
Biehmltym6 小时前
【AI】09AI Agent LLM → Streaming → Session 记录 的完整链路
大数据·人工智能·elasticsearch
数据库生产实战6 小时前
Oracle的_segment_count和3个event对高并发事务与索引性能的影响分析
数据库·oracle
Data-Miner7 小时前
精品PPT | 某制造集团灯塔工厂解决方案
大数据·人工智能·制造
阿拉伯柠檬7 小时前
MySQL内置函数
linux·数据库·mysql·面试
小Mie不吃饭7 小时前
2025 Oracle小白零基础到入门的学习路线
数据库·oracle
计算机学姐8 小时前
基于SpringBoot的送货上门系统【2026最新】
java·vue.js·spring boot·后端·mysql·spring·tomcat
麒qiqi8 小时前
SQLite3 数据库
数据库·oracle
小湘西8 小时前
Elasticsearch 的一些默认配置上下限
java·大数据·elasticsearch
逻极8 小时前
FastAPI + SQLAlchemy 现代API项目实战:从零到上手的Python MySQL开发指南
python·mysql·fastapi·异步·sqlalchemy