下载此文档

2018大数据Spark性能调优之数据倾斜.docx


文档分类:通信/电子 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
2018大数据Spark性能调优之数据倾斜
如今学****大数据开发的人不断的增加,但是关于大数据也有不少的小伙伴不是很了解,本篇文章小编就和大家一块来看一下大数据分析之2018大数据Spark性能调优之数据倾斜,希望可以帮到喜欢或者准备学****大数据的小伙伴们。
绝大多数task执行得都非常快,但个别task执行极慢。比如总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时,这种情况很常见。2018大数据Spark性能调优之数据倾斜,大数据培训老师分享给大家。
原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常栈,是我们写的业务代码造成的。这种情况比较少见,数据倾斜发生的原因:
在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作。此时如果某个key对应的数据量特别大的话,就会发生数据倾斜,因此出现数据倾斜的时候,Spark作业看起来会运行得非常缓慢,甚至可能因为某个task处理的数据量过大导致内存溢出。
数据倾斜只会发生在shuffle过程中 distinct、groupByKey、reduceByKey、aggregateByKey、join、cogroup、repartition等。
问题分析:
某个task执行特别慢的情况。
首先要看的,就是数据倾斜发生在第几个stage中。
如果是用yarn-client模式提交,那么本地是直接可以看到log的,可以在log中找到当前运行到了第几个stage。
如果是用yarn-cluster模式提交,则可以通过Spark Web UI来查看当前运行到了第几个stage。
此外,无论是使用yarn-client模式还是yarn-cluster模式,我们都可以在Spark Web UI上深入看一下当前这个stage各个task分配的数据量,从而进一步确定是不是task分配的数据不均匀导致了数据倾斜。
知道数据倾斜发生在哪一个stage之后,接着我们就需要根据stage划分原理,推算出来发生倾斜的那个stage对应代码中的哪一部分(Spark是根据shuffle类算子来进行stage的划分)。
某个task莫名其妙内存溢出的情况。
看log的异常栈,通过异常栈信息就可以定位到你的代码中哪一行发生了内存溢出。然后在那行代码附近找找,一般也会有shuffle类算子,此时很可能就是这个算子导致了数据倾斜。不能单纯靠偶然的内存溢出就判定发生了数据倾斜。因为自己编写的代码的bug,以及偶然出现的数据异常,也可能会导致内存溢出。
查看导致数据倾斜的key的数据分布情况。
知道了数据倾斜发生在哪里之后,通常需要分析一下哪个执行了shuffle操作并且导致了数据倾斜的RDD表。查看一下其中key的分布情况,这主要是为之后选择哪一种技术方案提供依据。针对不同的key分布与不同的shuffle算子组合起来的各种情况,可能需要选择不同的技术方案来解决。
有很多种查看key分布的方式
如果是Spark SQL中的group by、join语句导致的数据倾斜,那么就查询一下SQL中使用的表的key分布情况。

2018大数据Spark性能调优之数据倾斜 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sxlw2014
  • 文件大小21 KB
  • 时间2018-07-17