spark数据倾斜问题

数据倾斜:(加更大内存 跟cpu硬件是性能优化的根本之道)


(一)            数据倾斜带来的致命性后果:


1.      OOM(根本原因数据太多)一般OOM都是由于数据倾斜所致,spark基于JVM之上的

2.      速度非常慢



(二)            数据倾斜的基本特征:


1.      任务分配不均匀 

2.      个别task处理过度大量的数据(shuffle过程中遇到同一个key的value太多了。基本都存在业务热点问题,这是现实问题【20%与80%的关系】)


(三)            数据倾斜的定位


1.      Web Ui可以清晰的看见哪些Task运行的数据量大小;

2.      Log的一个好处是可以清晰的告诉是哪一行出现问题OOM,同时的可以清晰的看到在哪个具体stage出现了数据倾斜(数据倾斜一般在shuffle过程中产生),从而定位具体的shuffle代码,也有可能出现绝大多数Task非常快,隔壁非常慢;

3.      代码走读,重点看join、 groupByKey 、 reduceByKey的关键代码;

4.      对数据特征分布进行分析;


 

(四)            均衡数据


大块数据敲碎,数据倾斜时候如果某个key非常多value,那么可以分成多个key,但是一步到位还有可能不尽人意,多步;

把数据规模变大(当一个方向走不通时候就沿着反方向走);

局部聚合+全局聚合;

先取样判断哪个数据多;

ETL对数据的key进行聚合或者对数据join操作,数据倾斜最好方式就是不要产生shuffle;

过滤掉倾斜的key;

适当提高并行度;

利用广播去进行shuffle或者join,能不进行shuffle就进行;

Spark基于RDD构建整个调度体系生态体系,核心一就是复用RDD;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值