【大数据学习 | 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 小时前
CentOS 8 如何安装java与mysql
java·mysql·centos
苹果酱05676 小时前
Golang的文件加密技术研究与应用
java·vue.js·spring boot·mysql·课程设计
周周写不完的代码6 小时前
mysql -> 达梦数据迁移(mbp大小写问题兼容)
数据库·mysql·达梦
MasterNeverDown8 小时前
如何将 DotNetFramework 项目打包成 NuGet 包并发布
大数据·hadoop·hdfs
中科岩创8 小时前
广西钦州刘永福故居钦江爆破振动自动化监测
大数据·物联网
大数据编程之光9 小时前
Flink-CDC 全面解析
大数据·flink
跳跳的向阳花9 小时前
05、Docker学习,常用安装:Mysql、Redis、Nginx、Nacos
学习·mysql·docker
GZ_TOGOGO10 小时前
华为大数据考试模拟真题(附答案)题库领取
大数据·华为
计算机毕设指导610 小时前
基于Springboot的景区民宿预约系统【附源码】
java·开发语言·spring boot·后端·mysql·spring·intellij idea
zhangxueyi11 小时前
MySQL之企业面试题:InnoDB存储引擎组成部分、作用
java·数据库·mysql·面试·innodb