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

相关推荐
一條狗2 分钟前
Flink随笔 20241129 流数据处理:以生产线烤鸡为例理解 Flink
大数据·flink
小人物之辈7 分钟前
MySQL 查询 执行顺序
数据库·mysql
莫叫石榴姐8 分钟前
SQL进阶技巧:非等值连接--单向近距离匹配
大数据·数据库·hive·sql·oracle·数据分析
Mephisto.java13 分钟前
【大数据学习 | Spark-SQL】定义UDF和DUAF,UDTF函数
大数据·hadoop·oracle·spark·database
J.P.August1 小时前
Oracle 11g R2 RAC 到单实例 Data Guard 搭建(RMAN备份方式)
数据库·oracle
Dipeak数巅科技2 小时前
通过数巅能源大模型降本增效
大数据·数据库·人工智能·数据分析·能源
少年攻城狮2 小时前
Oracle系列---【关闭归档日志】
数据库·oracle
Mephisto.java2 小时前
【大数据学习 | Spark调优篇】Spark之JVM调优
大数据·学习·spark
代码欢乐豆3 小时前
软件工程期末复习
大数据·hadoop·软件工程