您的位置:首页 > 其它

spark数据倾斜问题

2016-11-21 22:18 323 查看
数据倾斜:(加更大内存 跟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;

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: