Shuffle Read Time调优
先看第一张Spark任务执行时间轴的图:
红色部分是任务反序列化时间,黄色部分是shuffle read时间,绿色是实际计算任务执行时间,这里我们先不讨论任务反序列化时间长,下一篇文章说任务反序列化时间长怎么解决
1、首先shuffle read time是什么?
shuffle发生在宽依赖,如repartition、groupBy、reduceByKey等宽依赖算子操作中,在这些操作中会对Dataset数据集按照给定的规则重新洗牌,洗牌完成之后会落盘。然后对应的分区会被对应任务fetch到任务所在节点进行计算。这个fetch的过程所消耗的时间就是shuffle read time。
2、shuffle read time长短跟什么相关?
数据量、网络IO、资源、参数配置、并发度
3、以上图片里这种情况,可以看到shuffle read time比较均匀,优化方式:
- 如果使用的序列化方式不是kryo,先将序列化和反序列化方式换成kryo
- 将以下两个参数做适当调整
spark.reducer.maxReqsInFlight=512
单次最大拉取请求数,这个设置过大容易造成分区数据所在节点压力大,设置太小会大大影响并发拉取数据的效率,默认Int.MaxValue
spark.reducer.maxSizeInFlight=128m
单次每个reduce任务能同时从map output拉取的最大数据量,如果资源不够的话还是要小一点,默认48m
注意:在分区不多,并发度较小的情况下,这两个参数不专门设置也不会有太大影响。但是如果设置不合理的话,增加资源是没有多少效果的,方向不对
再看第二张Spark任务执行时间轴的图:
对于这种情况,可以看到shuffle read time不均匀,有些shuffle read time几乎为零,有的很长,优化方式:
原因:executor内存给的太小,reduce拉取数据时碰到map端executor正好做GC的几率大
解决办法:调大executor内存
Shuffle Read Time调优相关推荐
- 一文搞清楚 Spark shuffle 调优
Spark shuffle 调优 Spark 基于内存进行计算,擅长迭代计算,流式处理,但也会发生shuffle 过程.shuffle 的优化,以及避免产生 shuffle 会给程序提高更好的性能.因 ...
- Spark性能优化:Shuffle调优篇
Spark性能优化:Shuffle调优篇 一.调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO.序列化.网络数据传输等操作.因此,如果要让作业的性 ...
- Spark性能优化之-shuffle调优
文章目录 概述 ShuffleManager发展概述 HashShuffleManager运行原理 未经优化的HashShuffleManager 优化后的HashShuffleManager Sor ...
- 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例
大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...
- 美团如何缓解数据倾斜与shuffle调优
原文来自美团技术博客 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决 ...
- hive sql 报错后继续执行_Hive优化之Spark执行引擎参数调优(二)
Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的的一个点,因此掌握一些Hive调优是必不可少的一项技能.影响Hive效率的主要有数据 ...
- Spark性能调优总结
文章授权自 : http://www.6aiq.com/article/1547041120082 使用正确的 transformations操作 虽然开发者达到某一目标,可以通过不同的transfo ...
- Spark shuffle调优
Spark shuffle是什么 Shuffle在Spark中即是把父RDD中的KV对按照Key重新分区,从而得到一个新的RDD.也就是说原本同属于父RDD同一个分区的数据需要进入到子RDD的不同的分 ...
- spark调优(一)-开发调优,数据倾斜,shuffle调优
主要分为开发调优.资源调优.数据倾斜调优.shuffle调优几个部分. 开发调优和资源调优是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础:数据倾斜调优,主要讲解了一套 ...
最新文章
- Ext JS Designer 1.0.5 发布
- 真香!3个月0基础转型大厂数据分析师,他做对了什么?
- flink批处理访问mysql_Flink 异步IO访问外部数据(mysql篇)
- python详细安装教程linux-Python 环境安装步骤
- 网络工程师必懂的专业术语
- Backbone与服务器接口之Model数据同步
- html炫酷在线,小伙伴们都会惊呆的10个超炫的HTML5+CSS3效果作品
- 最简单的opencv安装方法----利用annaconda安装opencv
- 废粉盒在哪里_很想知道打印机废粉盒中的那些废碳粉应该怎么处理?
- strtolower_PHP strtolower()函数与示例
- Wordpress 与 Sphere 结为合作伙伴
- concat mysql sql注入_Mysql中用concat函数执行SQL注入查询的方法
- js 异步函数讲解: Promise、async和await示例
- 北大生物信息学学习(2) 生物学及生物学信息学的发展
- Javascript数据类型,类型转换
- 可以自我学习的AI五子棋
- python设置清华源镜像
- 《凤凰项目:一个IT运维的传奇故事》笔记
- 顺序表元素的多种删除方式——删除重复元素和删除掉所有相同元素
- 找不到文件direct12.h