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

相关推荐
Fullde福德负载箱厂家3 小时前
负载箱的隐性成本与全周期经济性:用户应知的持有成本与价值管理
大数据·安全·制造
程序鉴定师3 小时前
深圳小程序制作哪家好?2026深度市场分析与选择指南?
大数据·小程序
逸Y 仙X3 小时前
文章十六:ElasticSearch 使用enrich策略实现大宽表
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
Sherry Wangs3 小时前
MySQL 与向量数据库的核心区别:从结构化数据到语义搜索
数据库·mysql
jkyy20143 小时前
AI赋能智慧座舱:健康有益重构移动健康空间,定义出行健康新范式
大数据·人工智能·物联网·健康医疗
@小柯555m3 小时前
MySql(高级操作符--高级操作符练习(2))
数据库·sql·mysql
阿明观察3 小时前
破局·领航·赋能:解码国家云如何开辟Token经济新路径
大数据·人工智能
渣渣盟3 小时前
大数据技术栈全景图:从零到一的入门路线(深度实战版)
大数据·hadoop·python·flink·spark
zxrhhm4 小时前
MySQL Server层与InnoDB存储引擎的关系+两阶段提交详解
mysql
Mr_linjw4 小时前
MySQL 中监控和优化慢 SQL & 索引小知识
数据库·sql·mysql