一、参数调优:

提交任务参数请参考这篇文章(包括优化建议):Spark部署模式、任务提交 - GoAl

spark任务:编写脚本或代码里设置参数
• 第一块:让task执行代码时,默认占executor总内存的20%。

• 第二块:task通过shuffle过程拉取上一个stage的task的输出后,进行聚合等操作时默认也是占Executor总内存的20%,使用Task的执行速度和每个executor进程的CPU Core数量有直接关系,一个CPU Core同一时间只能执行一个线程,每个executor进程上分配到的多个task,都是以task一条线程的方式,多线程并发运行的。如果CPU Core数量比较充足,而且分配到的task数量比较合理,那么可以比较快速和高效地执行完这些task线程

• 第三块:让RDD持久化时使用,默认占executor总内存的60%

二、开发调优

原则一:避免创建重复的RDD

– 对同一份数据,只应该创建一个RDD,不能创建多个RDD来代表同一份数据

– 极大浪费内存

原则二:尽可能复用同一个RDD

– 比如:一个RDD数据格式是key-value,另一个是单独value类型,这两个RDD的value部分完

全一样,这样可以复用达到减少算子执行次数

原则三:对多次使用的RDD进行持久化处理

– 每次对一个RDD执行一个算子操作时,都会重新从源头处理计算一遍,计算出那个RDD出来,然后进一步操作,这种方式性能很差

– 对多次使用的RDD进行持久化,将RDD的数据保存在内存或磁盘中,避免重复劳动

– 借助cache()和persist()方法

持久化级别:默认persist()

原则四:避免使用shuffle类算子

– 在spark作业运行过程中,最消耗性能的地方就是shuffle过程

– 将分布在集群中多个节点上的同一个key,拉取到同一个节点上,进行聚合和join处理,比如

groupByKey(下图一)、reduceByKey、join(下图二)等算子,都会触发shuffle

原则五:使用map-side预聚合的shuffle操作

– 一定要使用shuffle的,无法用map类算子替代的,那么尽量使用map-site预聚合的算子

– 思想类似MapReduce中的Combiner

– 可能的情况下使用reduceByKey或aggregateByKey算子替代groupByKey算子,因为

reduceByKey或aggregateByKey算子会使用用户自定义的函数对每个节点本地相同的key进行

预聚合,而groupByKey算子不会预聚合

原则六:使用Kryo优化序列化性能

– Kryo是一个序列化类库,来优化序列化和反序列化性能

– Spark默认使用Java序列化机制(ObjectOutputStream/ ObjectInputStream API)进行序列

化和反序列化

– Spark支持使用Kryo序列化库,性能比Java序列化库高很多,10倍左右

Spark常见优化原则相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 由美团技术文章整理---spark性能优化基础篇--开发调优与资源参数调优

    文章地址1:Spark性能优化指南--基础篇 - 美团技术团队 文章地址2:Spark性能优化指南--高级篇 - 美团技术团队 目录 一.关于性能优化基础篇--开发调优 1.避免创建重复RDD (1) ...

  8. Oracle SQL 优化原则(实用篇)

    由于SQL优化优化起来比较复杂,并且还受环境限制,在开发过程中,写SQL必须遵循以下几点原则: 1.Oracle 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他Where ...

  9. Spark性能优化之-开发调优

    文章目录 概述: 原则一:避免创建重复的RDD 原则二:尽可能复用同一个RDD 原则三:对多次使用的RDD进行持久化 Spark的持久化级别 如何选择一种最合适的持久化策略 原则四:尽量避免使用shu ...

最新文章

  1. 大厂AI面试官一语中的:一场面试暴露了你的机器学习水平
  2. Jenkins +maven+tomcat自动构建部署(学习笔记三十六)
  3. Navicat使用教程:在Navicat Monitor for MySQL/MariaDB中配置实
  4. tf.placeholder()
  5. UI标签库专题十三:JEECG智能开发平台 ckfinder(ckfinder插件标签)
  6. C语言全排列递归算法理解,C#算法之全排列递归算法实例讲解
  7. 欠债3000亿,宣布破产!昔日民族品牌,为何总沦为反面教材?
  8. ServletContext作用功能详解
  9. 第三章——空间域处理方法
  10. 3月2日 ESC CAN 比特率 波特率 带宽与容量 香农定理 奈奎斯特定理 信噪比
  11. 关于12306Bypass
  12. ExactScan pro for mac(万能扫描仪整合工具)
  13. Python爬虫马蜂窝结伴信息
  14. 各国网站域名后缀名大全
  15. 构建前端项目及使用技术
  16. P6跨级晋升P8再到P10,我的11年成长之路
  17. 宝元系统通讯软件recon_企业即时通讯系统拥有哪些二次开发能力?
  18. B站 URL转16进制防止评论贴URL被屏蔽
  19. “钱三篇”后续之汇率(上)
  20. android studio manifest merger failed,Android Studio报错Manifest merger failed with multiple errors...

热门文章

  1. netty 5.0 源码分析(1)-----ButeBuf
  2. LeetCode 144. 树的前序遍历迭代写法
  3. 【深度学习】深度学习分类与模型评估
  4. 写直通与访存次数计算问题
  5. Win10环境下,SecureCRT连接不上虚拟机,显示连接超时Connection time out. 而且网络连接里没有网络适配器VMnet1和VMnet8,互ping也不同。...
  6. RabbitMQ学习之Publish/Subscribe(3)
  7. lonlifeOJ1152 “玲珑杯”ACM比赛 Round #19 概率DP
  8. Scrapy运行时出现的错误 :exception.ImportError No module named win32api
  9. JS 学习笔记--8---Function类型
  10. C#利用NPOI导出Excel