diff --git a/README.md b/README.md index 1365904..5cac65a 100644 --- a/README.md +++ b/README.md @@ -579,3 +579,24 @@ spark.shuffle.io.retryWait 5s 2.通过算子获取一个RDD后,可以通过一些过滤操作,进行数据过滤。 3.可以使用压缩算子提前性能。 +## 数据倾斜 +### 数据倾斜解决方案之原理以及现象分析 +1.数据倾斜的原理 + + spark进行shuffle时,由于数据分配不均匀,导致某个Task的数据过大,这个Task运行时间过长,这就是数据倾斜。 + +2.数据倾斜的现象 + + spark数据倾斜,有两种表现: + + 1.大部分的task,都执行的特别特别快,有几个task执行的特别特别慢,前面的task一般1s可以执行完5个,后面发现1000个task,999task要执行1小时或者2小时才能执行完一个task + + 2.运行的时候,其他task执行造成,没有什么问题,但是有的task,就突然出现OOM,task failed,task lost反复执行几次都是某个task跑不通,最后挂掉。 + +3.数据倾斜的产生原因与定位 + + 根据log去定位,出现出现数据倾斜的原因,基本只可能因为出现了shuffle操作的在shuffle的过程中,出现了数据倾斜的问题。因为某个,或者某些key对应的数据,远高于其他key。 + + 1.在程序中找到产生shuffle得算子 + + 2.看log,log一般会报你的哪一行代码,导致OOM异常,看看执行到第几个stage。