Spark性能优化(2)——广播变量、本地缓存目录、RDD操作、数据倾斜
广播变量
背景
一般Task大小超过10K时(Spark官方建议是20K),需要考虑使用广播变量进行优化。
大表小表Join,小表使用广播的方式,减少Join操作。
Local Dir
背景
shuffle过程中,临时数据需要写入本地磁盘。本地磁盘的临时目录通过参数spark.local.dir配置。
性能优化点
spark.local.dir支持配置多个目录。配置spark.local.dir有多个目录,每个目录对应不同的磁盘,这样可以提升IO效率。另外,可以采用IO性能较高的磁盘作为local dir的磁盘。
注意:
- 如果使用YARN、Mesos等资源框架,此参数应该通过相应资源框架的参数来设置。
- 如果只有一个磁盘,配置了多个目录,性能提升不大。
RDD操作:使用MapPartitions替代Map
性能优化点
map方法是对RDD的每一条记录逐一操作。mapPartitons是对整个RDD,以迭代器的方式逐一操作。比如对条记录的开销较大,比如需要连接、断开数据库。使用map方法需要对每一条记录都连接、断开数据库,效率差。此时,可以改用mapPartitons操作,只需要整个Partition连接、断开一次数据库即可。
1 |
rdd.map{x => conn=getDBConn;conn.write(x.toString);conn.close}
|
改为:
1 |
rdd.mapPartitions(records => conn.getDBConn;for(item <- records) write(item.toString); conn.close) |
RDD操作:使用coalesce减小空运行的任务数量
性能优化点
- 场景一
当对RDD进行多次过滤时,可能会形成很多空的、无数据的Partition。通过调用coalesce方法,可以减小Task个数。让有的Task可以同时管理多个Partition。
- 场景二
当任务数过多的时候,Shuffle压力太大导致程序挂住不动,或者出现linux资源受限的问题。此时,可以通过调用coalesce方法,可以减小Task个数,让程序得以继续运行。
coalesce()方法接受一个参数,为减小后的目标Partition个数。
RDD操作:collect
Collect操作会将Executor的数据发送的Driver端。需要确保Driver有足够的内存。Driver的内存通过参数spark.driver.memory参数进行配置。
RDD操作:使用reduceByKey替代groupByKey
reduceByKey会在Map端做本地聚合,而groupByKey等Shuffle操作不会再Map端做聚合。 能使用reduceByKey的地方尽量使用该方式,避免出现.groupByKey().map(x=>(x.1,x.2.size))
- 举例
对于数据
2015-05-01 13:00:00,B101,MEILIN
2015-05-01 10:04:20,B101,GUANLAN
2015-05-01 09:18:00,F301,MEILIN
2015-05-01 12:00:00,B107,WUHE
2015-05-01 18:20:00,F301,WUHE
2015-05-02 12:00:02,T442,GUANLAN
2015-05-01 07:00:00,B101,GUANLAN
2015-05-01 21:31:00,M721,WUHE
2015-05-01 09:00:00,Z007,MEILIN
现在要统计各个车牌(第二列)出现的次数,则应使用:
1 |
var dataRDD = sc.textFile("file:///tmp/data.txt")
|

而不是:
1 |
var dataRDD = sc.textFile("file:///tmp/data.txt")
|

避免数据倾斜
如何检测数据倾斜?
现象:没有GC,各Task执行时间严重不一致。
性能优化点
- 重新设计key,以更小粒度的key使得Task大小合理化。
- 有时提升并行度,有助于解决数据倾斜
Spark性能优化(2)——广播变量、本地缓存目录、RDD操作、数据倾斜的更多相关文章
- IIS7性能优化:启用浏览器本地缓存
原文地址:http://jingyan.baidu.com/article/597035521b96e88fc00740af.html
- 【转载】Spark性能优化指南——高级篇
前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数 ...
- 【转】【技术博客】Spark性能优化指南——高级篇
http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...
- Spark性能优化指南——高级篇(转载)
前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问 ...
- Spark性能优化指南-高级篇
转自https://tech.meituan.com/spark-tuning-pro.html,感谢原作者的贡献 前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作 ...
- Spark性能优化指南——高级篇
本文转载自:https://tech.meituan.com/spark-tuning-pro.html 美团技术点评团队) Spark性能优化指南——高级篇 李雪蕤 ·2016-05-12 14:4 ...
- Spark性能优化:数据倾斜调优
前言 继<Spark性能优化:开发调优篇>和<Spark性能优化:资源调优篇>讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化 ...
- 【转载】 Spark性能优化指南——基础篇
转自:http://tech.meituan.com/spark-tuning-basic.html?from=timeline 前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能 ...
- 【转】Spark性能优化指南——基础篇
http://mp.weixin.qq.com/s?__biz=MjM5NDMwNjMzNA==&mid=2651805828&idx=1&sn=2f413828d1fdc6a ...
随机推荐
- HAproxy 代理技术原理探究
HAproxy 技术分享 简介 HAProxy是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件 Features 1.免费 2.能够做到4层以上代理 3.高性能 ...
- pycharm 激活相关
https://blog.csdn.net/u014044812/article/details/78727496dfasdfasdfdfaasdkjfhaskljdfhkajsdhfljahsdfk ...
- parcelable 和 serializable 区别
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha serializable 是 java 中的 序列化 接口. parcelable 是 ...
- BZOJ.3498.[PA2009]Cakes(三元环 枚举)
题目链接 感觉我可能学的假的(复杂度没问题,但是常数巨大). 一个比较真的说明见这儿:https://czyhe.me/blog/algorithm/3-mem-ring/3-mem-ring/. \ ...
- hdu 4859 最小割
链接:点我 未懂
- bzoj 2961
根据“点在圆内”关系,列出点P(x0,y0)在圆C(x,y)内的关系: (x-x0)^2+(y-y0)^2 <= x^2+y^2 化简得: 2*x0*x+2*y0*y >= x0^2+y0 ...
- PAT甲级1127. ZigZagging on a Tree
PAT甲级1127. ZigZagging on a Tree 题意: 假设二叉树中的所有键都是不同的正整数.一个唯一的二叉树可以通过给定的一对后序和顺序遍历序列来确定.这是一个简单的标准程序,可以按 ...
- HAproxy和TIME WAIT的一次问题排查
近日平稳运行了将近4年的发号器突然出现问题,在元旦0分的时候出现短暂的性能下降,导致发号失败率飙高到一个不可接收的值,哎,意外总是发生在你想不到的地方. 这几天赶紧和小伙伴们赶紧追查原因,制定改造方案 ...
- 华为S5300系列升级固件S5300SI-V100R003C00SPC301.cc
这个固件是升级V100R005的中间件,所以是必经的,注意,这个固件带有http的服务,但现在无论官网还是外面,几乎找不到这个固件的web功能,如果非要实现,可以拿V100R005的web文件改名为w ...
- [Linux] VIM Practical Note
Practical Vim 文件 1.1. 管理多个文件 1.1.1. 缓冲区 • :ls • 查看缓冲区列表 • :bprev • 前一项 • :bnext • 后一项 • :bfirst • 第一 ...