【大数据学习 | 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 小时前
MySQL——事务
数据库·mysql
weixin_472339462 小时前
MySQL优化全链路实践:从慢查询治理到架构升级
数据库·mysql·架构
运维老曾2 小时前
MySQ-8.42 MGR 组复制部署及详解
数据库·mysql
love530love3 小时前
【笔记】2025 年 Windows 系统下 abu 量化交易库部署与适配指南
大数据·运维·人工智能·windows·笔记·python·conda
程序员大辉3 小时前
MySQL 核心知识整理【一】
数据库·mysql
数据皮皮侠AI3 小时前
中国城市间地理距离矩阵(2024)
大数据·人工智能·线性代数·算法·矩阵·动态规划·制造
武子康4 小时前
大数据-275 Spark MLib - 基础介绍 机器学习算法 集成学习 随机森林 Bagging Boosting
大数据·算法·机器学习·ai·语言模型·spark-ml·集成学习
代码探秘者4 小时前
【JAVA后端入门基础001】Tomcat 是什么?通俗易懂讲清楚!
java·数据结构·数据库·spring boot·后端·mysql·tomcat
厚衣服_36 小时前
第十一篇:MySQL 在分布式系统中的一致性保障与中间件实践
数据库·mysql·中间件
G皮T6 小时前
【Elasticsearch】Elasticsearch 核心技术(一):索引
大数据·elasticsearch·kibana·es·索引·索引别名·索引模板