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

相关推荐
潇湘秦6 分钟前
ORACLE_PDB_SID和ORACLE_SID的区别
数据库·oracle
Elastic 中国社区官方博客28 分钟前
Elasticsearch 中使用 NVIDIA cuVS 实现最高快 12 倍的向量索引速度:GPU 加速第 2 章
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·数据库架构
wstcl34 分钟前
通过EF Core将Sql server数据表移植到MySql
数据库·mysql·sql server·efcore
jqpwxt35 分钟前
启点智慧景区多商户分账系统,多业态景区收银管理系统
大数据·旅游
聪聪那年2242 分钟前
Oracle 11g windows 10安装与卸载
数据库·oracle
故渊ZY43 分钟前
从入门到精通:MySQL 核心技术与业务落地实践
mysql
计算机毕设匠心工作室1 小时前
【python大数据毕设实战】全面皮肤病症状数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
jkyy20141 小时前
线上线下融合、跨场景协同—社区健康医疗小屋的智能升级
大数据·人工智能·物联网·健康医疗
云和恩墨1 小时前
AI驱动的Oracle SQL优化:从经验依赖到智能协同的三大价值
人工智能·sql·oracle·深度优先·dba
qq_12498707531 小时前
基于SpringBoot+vue的小黄蜂外卖平台(源码+论文+部署+安装)
java·开发语言·vue.js·spring boot·后端·mysql·毕业设计