先看第一张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调优相关推荐

  1. 一文搞清楚 Spark shuffle 调优

    Spark shuffle 调优 Spark 基于内存进行计算,擅长迭代计算,流式处理,但也会发生shuffle 过程.shuffle 的优化,以及避免产生 shuffle 会给程序提高更好的性能.因 ...

  2. Spark性能优化:Shuffle调优篇

    Spark性能优化:Shuffle调优篇 一.调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO.序列化.网络数据传输等操作.因此,如果要让作业的性 ...

  3. Spark性能优化之-shuffle调优

    文章目录 概述 ShuffleManager发展概述 HashShuffleManager运行原理 未经优化的HashShuffleManager 优化后的HashShuffleManager Sor ...

  4. 大数据技术之_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. ...

  5. 美团如何缓解数据倾斜与shuffle调优

    原文来自美团技术博客 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决 ...

  6. hive sql 报错后继续执行_Hive优化之Spark执行引擎参数调优(二)

    Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的的一个点,因此掌握一些Hive调优是必不可少的一项技能.影响Hive效率的主要有数据 ...

  7. Spark性能调优总结

    文章授权自 : http://www.6aiq.com/article/1547041120082 使用正确的 transformations操作 虽然开发者达到某一目标,可以通过不同的transfo ...

  8. Spark shuffle调优

    Spark shuffle是什么 Shuffle在Spark中即是把父RDD中的KV对按照Key重新分区,从而得到一个新的RDD.也就是说原本同属于父RDD同一个分区的数据需要进入到子RDD的不同的分 ...

  9. spark调优(一)-开发调优,数据倾斜,shuffle调优

    主要分为开发调优.资源调优.数据倾斜调优.shuffle调优几个部分. 开发调优和资源调优是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础:数据倾斜调优,主要讲解了一套 ...

最新文章

  1. Ext JS Designer 1.0.5 发布
  2. 真香!3个月0基础转型大厂数据分析师,他做对了什么?
  3. flink批处理访问mysql_Flink 异步IO访问外部数据(mysql篇)
  4. python详细安装教程linux-Python 环境安装步骤
  5. 网络工程师必懂的专业术语
  6. Backbone与服务器接口之Model数据同步
  7. html炫酷在线,小伙伴们都会惊呆的10个超炫的HTML5+CSS3效果作品
  8. 最简单的opencv安装方法----利用annaconda安装opencv
  9. 废粉盒在哪里_很想知道打印机废粉盒中的那些废碳粉应该怎么处理?
  10. strtolower_PHP strtolower()函数与示例
  11. Wordpress 与 Sphere 结为合作伙伴
  12. concat mysql sql注入_Mysql中用concat函数执行SQL注入查询的方法
  13. js 异步函数讲解: Promise、async和await示例
  14. 北大生物信息学学习(2) 生物学及生物学信息学的发展
  15. Javascript数据类型,类型转换
  16. 可以自我学习的AI五子棋
  17. python设置清华源镜像
  18. 《凤凰项目:一个IT运维的传奇故事》笔记
  19. 顺序表元素的多种删除方式——删除重复元素和删除掉所有相同元素
  20. 找不到文件direct12.h

热门文章

  1. easyexcel 阿里巴巴官方文档地址
  2. 2020-09-09 Python的进程间通信
  3. OpenCV:用C++绘制彩色铅笔画(Canny边缘检测算法)
  4. SpringCloud Alibaba Security安全认证
  5. 基于echarts 数据可视化大屏展示数据概览演示案例
  6. HDU 6208【假AC自动机+string方法】
  7. NVIDIA nx实现facenet人脸识别
  8. 人、男人、女人和猪的区别
  9. 微服务和VUE入门教程(26): 微服务之turbine
  10. 谷歌Transformer再升级——新模型实现性能、速度双提升,发展潜力巨大