大数据处理中,数据倾斜是一个常见且棘手的问题。它指的是在分布式计算中,数据被分配到各个节点上时,由于某些特定特征,导致绝大部分数据集中到了一个或少数几个节点上,而其他节点只处理了少量数据。
这种情况会造成:
- 少数任务运行极其缓慢(长尾任务),成为整个作业的瓶颈。
- 资源利用不均:大部分节点空闲,少数节点“过劳死”。
- 任务失败:单个节点内存溢出(OOM)、磁盘写满或处理超时,导致作业失败。
以下是导致数据倾斜的几种典型情况,我将从数据本身和计算操作两个维度来阐述:
一、数据本身的特性导致的倾斜(根源)
这类问题的根源在于数据分布本身就极不均匀。
-
热点Key的存在
- 描述:这是最常见的数据倾斜原因。某个或某几个Key对应的数据量远远超过其他Key。
- 举例:
- 日志数据中的
user_id:某些爬虫或机器人账号(如guest,null,test)会产生海量记录。 - 交易数据中的
商品ID:某款热门商品(如秒杀商品)的交易记录会异常多。 - 地理位置数据中的
城市:北上广深等超大城市的数据量远超其他城市。
- 日志数据中的
-
空值或异常值(NULL/Placeholder)
- 描述:数据中的空值(
NULL)或特定的默认
- 描述:数据中的空值(

最低0.47元/天 解锁文章
5061

被折叠的 条评论
为什么被折叠?



