赞
踩
数据倾斜:(加更大内存 跟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;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。