倾斜在两种使用情形中出现
1 join
2 group by
倾斜表象
1.任务进度长度为99%,在任务监控页面中发现只有几个 reduce 子任务未完成;
2.单一 reduce 记录与平均记录数差异过大(大于3倍),最长时长>>平均时长;
3.某一个key值数据量过大导致jvm内存溢出,mr作业报错
现象原因
1. Map输出key数量极少,导致reduce端退化为单机作业或者集群资源没有充分利用
2. Map输出key分布不均,少量key对应大量value,导致reduce端单机瓶颈或者集群资源没有充分利用
join
备注在前面1: 大表有时候不是真正的大表,比如日志表的用户信息,很多时候对用户去重之后就没有之前那么大了
备注在前面2: [大表和小表inner join 或者
大表
left join小
表
]的时候小表数据量<大小表阀值(hive.mapjoin.smalltable.filesize)时,默认走mapjoin(前提是hive.auto.convert.join 默认为 true)
Q1:待验证:已验证
案例1
驱动表键空值/缺省值/极少特殊值导致数据倾斜
select * </