Spark常见优化原则
一、参数调优:
提交任务参数请参考这篇文章(包括优化建议):Spark部署模式、任务提交 - GoAl
• 第二块: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()方法
原则四:避免使用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常见优化原则相关推荐
- Spark性能优化指南:基础篇
前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...
- Spark性能优化指南:高级篇
前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问 ...
- 转载 Spark性能优化指南——基础篇
前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...
- Spark性能优化指南——基础篇
在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作,应用 ...
- Spark性能优化指南——高级篇
继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题. ...
- 【转】【技术博客】Spark性能优化指南——高级篇
http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...
- 由美团技术文章整理---spark性能优化基础篇--开发调优与资源参数调优
文章地址1:Spark性能优化指南--基础篇 - 美团技术团队 文章地址2:Spark性能优化指南--高级篇 - 美团技术团队 目录 一.关于性能优化基础篇--开发调优 1.避免创建重复RDD (1) ...
- Oracle SQL 优化原则(实用篇)
由于SQL优化优化起来比较复杂,并且还受环境限制,在开发过程中,写SQL必须遵循以下几点原则: 1.Oracle 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他Where ...
- Spark性能优化之-开发调优
文章目录 概述: 原则一:避免创建重复的RDD 原则二:尽可能复用同一个RDD 原则三:对多次使用的RDD进行持久化 Spark的持久化级别 如何选择一种最合适的持久化策略 原则四:尽量避免使用shu ...
最新文章
- 大厂AI面试官一语中的:一场面试暴露了你的机器学习水平
- Jenkins +maven+tomcat自动构建部署(学习笔记三十六)
- Navicat使用教程:在Navicat Monitor for MySQL/MariaDB中配置实
- tf.placeholder()
- UI标签库专题十三:JEECG智能开发平台 ckfinder(ckfinder插件标签)
- C语言全排列递归算法理解,C#算法之全排列递归算法实例讲解
- 欠债3000亿,宣布破产!昔日民族品牌,为何总沦为反面教材?
- ServletContext作用功能详解
- 第三章——空间域处理方法
- 3月2日 ESC CAN 比特率 波特率 带宽与容量 香农定理 奈奎斯特定理 信噪比
- 关于12306Bypass
- ExactScan pro for mac(万能扫描仪整合工具)
- Python爬虫马蜂窝结伴信息
- 各国网站域名后缀名大全
- 构建前端项目及使用技术
- P6跨级晋升P8再到P10,我的11年成长之路
- 宝元系统通讯软件recon_企业即时通讯系统拥有哪些二次开发能力?
- B站 URL转16进制防止评论贴URL被屏蔽
- “钱三篇”后续之汇率(上)
- android studio manifest merger failed,Android Studio报错Manifest merger failed with multiple errors...
热门文章
- netty 5.0 源码分析(1)-----ButeBuf
- LeetCode 144. 树的前序遍历迭代写法
- 【深度学习】深度学习分类与模型评估
- 写直通与访存次数计算问题
- Win10环境下,SecureCRT连接不上虚拟机,显示连接超时Connection time out. 而且网络连接里没有网络适配器VMnet1和VMnet8,互ping也不同。...
- RabbitMQ学习之Publish/Subscribe(3)
- lonlifeOJ1152 “玲珑杯”ACM比赛 Round #19 概率DP
- Scrapy运行时出现的错误 :exception.ImportError No module named win32api
- JS 学习笔记--8---Function类型
- C#利用NPOI导出Excel