实战干货解决Spark数据倾斜之快速准确定位数据倾斜产生原因

Posted 勾叔谈大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实战干货解决Spark数据倾斜之快速准确定位数据倾斜产生原因相关的知识,希望对你有一定的参考价值。

大家好,我是勾叔。今天勾叔教大家快速准确定位数据倾斜产生原因的技巧。话不多说,直入主题。

勾叔将从数据特征分析数据倾斜判定以及数据倾斜定位来为大家讲述。


数据特征分析


分析数据必须先与处理数据,分析数据主要包括以下内容:
1. 数据的整体规模
  • 数据规模有多大、文件有多少个、每个文件的大小
  • 预估资源的开销
2. 数据的存储格式
  • 普通文件格式、列式存储的文件格式
  • 文件是否压缩、压缩格式是什么
3. 数据列值的分布
  • 每一列有值的行数、每个值的行数分布(特别是key相关的列)
  • 分析列值分布可以通过数据采样完成
    注意:数据倾斜处理依赖这一步的数据列值分布结果。
了解了数据特征的分析后,接着,我们来聊一下数据倾斜的判定条件。


数据倾斜判定条件


外在表象,即数据倾斜的表现形式。
  • Executor lost、OOM、Shuffle过程频繁出现错误信息
  • 单个Executor执行时间特别久,整体任务卡在某个阶段无法结束
  • 正常运行的任务突然失败,而大多数 Task 运行正常,个别Task运行缓慢或发生OOM

导致外在表象存在的最根本原因有两个,如下:
  • 个别task处理的数据量远多于其他task
  • 每个task的拥有的资源是相同的,处理大数据量的task的所需的时间自然远多于其他task


到这里,肯定会有老铁问勾叔,如何定位数据倾斜呢?莫着急,大家带着迫切求知的心,继续跟着勾叔往下看。

定位数据倾斜


定位数据倾斜有两种方式,其一为借助 Spark Web UI,其二是定位 shuffle 算子,如下:

  • 借助 Spark Web UI
  • 定位 shuffle 算子

关于快速准确定位数据倾斜产生原因就讲述到这里,大家如果想进行更深入的学习,请关注勾叔谈大数据参与更多互动。



推荐阅读:





以上是关于实战干货解决Spark数据倾斜之快速准确定位数据倾斜产生原因的主要内容,如果未能解决你的问题,请参考以下文章

Spark学习之路 SparkCore的调优之数据倾斜调优

GaussDB(DWS)发生数据倾斜不要慌,一文教你轻松获取表倾斜率

GaussDB(DWS)发生数据倾斜不要慌,一文教你轻松获取表倾斜率

GaussDB(DWS)发生数据倾斜不要慌,一文教你轻松获取表倾斜率

Spark性能调优之解决数据倾斜

大数据之Hadoop(MapReduce):Hadoop解决数据倾斜方法