本文转自http://book.51cto.com/art/201409/453045.htm,所有权力归原作者所有。

Spark性能优化的10大问题及其解决方案

问题1:reduce task数目不合适

解决方式:

需根据实际情况调节默认配置,调整方式是修改参数spark.default.parallelism。通常,reduce数目设置为core数目的2到3倍。数量太大,造成很多小任务,增加启动任务的开销;数目太少,任务运行缓慢。

问题2:shuffle磁盘IO时间长

解决方式:

设置spark.local.dir为多个磁盘,并设置磁盘为IO速度快的磁盘,通过增加IO来优化shuffle性能;

问题3:map|reduce数量大,造成shuffle小文件数目多

解决方式:

默认情况下shuffle文件数目为map tasks * reduce tasks

通过设置spark.shuffle.consolidateFiles为true,来合并shuffle中间文件,此时文件数为reduce tasks数目;

问题4:序列化时间长、结果大

解决方式:

Spark默认使.用JDK.自带的ObjectOutputStream,这种方式产生的结果大、CPU处理时间长,可以通过设置spark.serializer为org.apache.spark.serializer.KryoSerializer。

另外如果结果已经很大,可以使用广播变量;

问题5:单条记录消耗大

解决方式:

使用mapPartition替换map,mapPartition是对每个Partition进行计算,而map是对partition中的每条记录进行计算;

问题6 : collect输出大量结果时速度慢

解决方式:

collect源码中是把所有的结果以一个Array的方式放在内存中,可以直接输出到分布式?文件系统,然后查看文件系统中的内容;

问题7: 任务执行速度倾斜

解决方式:

如果是数据倾斜,一般是partition key取的不好,可以考虑其它的并行处理方式 ,并在中间加上aggregation操作;

如果是Worker倾斜,例如在某些worker上的executor执行缓慢,可以通过设置spark.speculation=true 把那些持续慢的节点去掉;

问题9: 通过多步骤的RDD操作后有很多空任务或者小任务产生

解决方式:

使用coalesce或repartition去减少RDD中partition数量;

问题10:Spark Streaming吞吐量不高

解决方式:

可以设置spark.streaming.concurrentJobs

Spark性能优化的10大问题及其解决方案相关推荐

  1. spark内核揭秘-14-Spark性能优化的10大问题及其解决方案

    问题1:reduce task数目不合适 解决方案: 需要根据实际情况调整默认配置,调整方式是修改参数spark.default.parallelism.通常的,reduce数目设置为core数目的2 ...

  2. Spark性能优化指南:基础篇

    前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...

  3. Spark性能优化指南:高级篇

    前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问 ...

  4. 转载 Spark性能优化指南——基础篇

    前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...

  5. Spark性能优化指南——基础篇

    在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作,应用 ...

  6. Spark性能优化指南——高级篇

    继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题. ...

  7. 【转】【技术博客】Spark性能优化指南——高级篇

    http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...

  8. Spark性能优化--如何解决数据倾斜

    1 Data Skew 数据倾斜 1.1 数据倾斜概念 对Hive.Spark.Flink等大数据计算框架来讲,数据量大并不可怕,可怕的是数据倾斜. 数据倾斜是指并行处理的数据集中某一部分的数据显著多 ...

  9. spark 性能优化

    一 性能优化点 # 提升并行度,就意味着有更多的分区,也就意味着有更多的task.当然不是越多越好,结合实际情况 # 对多次使用的RDD进行缓存,可以减少不必要的计算 # 使用序列化的持久化机制,这样 ...

最新文章

  1. oracle9i安装不上,终于成功安装oracle9i了(Cent OS 4.0+oracle9204)
  2. 吴文俊人工智能科学技术奖:陆汝钤院士、百度王海峰等获奖
  3. Know about Oracle RAC Heartbeat
  4. Python算法和数据结构:在二叉树中找到和为sum的所有路径
  5. Java加密与解密笔记(三) 非对称加密
  6. ssdb主从及双主模型配置和简单管理
  7. 设计模式C++实现(14)——职责链模式
  8. Vijos 1100 (区间DP)
  9. DDD理论学习系列(13)-- 模块
  10. MySQl Got a packet bigger than ' max_allowed_packet' bytes
  11. java bitset_Java BitSet clone()方法及示例
  12. 鸿蒙(HarmonyOS)刷机指南
  13. Linux 常用命令六 cp和mv
  14. 计算机会计和传统手工会计的区别,手工会计与计算机会计之间的区别.doc
  15. python string length_自学Python:第四篇字符串
  16. python双重for循环 列表推导式_Python轻量级循环-列表推导式
  17. 外贸全流程30个邮件模板分享!
  18. 推荐几个优秀的人像摄影师
  19. 微信小程序座位预约,微信小程序实现订座位,餐厅座位预约小程序毕设作品
  20. 论文的开题报告是什么样的?

热门文章

  1. 萌龙大乱斗 合成表 持续更新
  2. 一个简单的动画FPS
  3. 计算机组成原理电子时钟设计与实现,《计算机组成原理》课程设计报告-基于VHDL数字电子钟设计与实现.doc...
  4. lazada铺货模式的选品_Lazada的商业模式有哪些?要怎么做?
  5. PAT乙级(1012 数字分类)
  6. 8日直播预告丨Oracle 19c X86下移经验分享
  7. PostgreSQL 13隐藏杀手锏特性
  8. 数据库每日一题 2020.05.08
  9. Oracle 等待事件(Wait Event):Sync ASM rebalance 解析
  10. 深入解析TRUNCATE TABLE – 手工修复和验证过程