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

相关推荐
智慧化智能化数字化方案7 小时前
数据架构进阶——解读数据架构管理培训【附全文阅读】
大数据·架构·数据架构管理培训·企业it架构·it治理·it规划·it蓝图
雨大王5127 小时前
汽车产业链如何通过数字化平台实现研发协同升级
大数据·人工智能
!chen7 小时前
Oracle分区表+本地索引 核心优化方案
数据库·oracle
叽里咕噜怪7 小时前
MySQL-读写分离实验
数据库·mysql
霸王大陆7 小时前
《零基础学PHP:从入门到实战》教程-模块七:MySQL 数据库基础-3
数据库·mysql·php
AL流云。7 小时前
MySQL安装【Centos, Ubuntu, Windows】
mysql·ubuntu·centos
我科绝伦(Huanhuan Zhou)7 小时前
Oracle性能优化方法论:从基线建立到问题根治
数据库·oracle·性能优化
菜鸟小九7 小时前
mysql运维(主从复制)
android·运维·mysql
知秋正在9967 小时前
ElasticSearch服务端报错:Unrecognized VM option ‘UseAVX=2‘
大数据·elasticsearch·jenkins
望安认证8 小时前
望安科技赞助并出席 2025 CCF 中国软件大会,共话形式化验证与原生安全最新发展
大数据·科技·安全·形式化验证·原生安全