Hive数据倾斜及解决方案

1.现象

      数据倾斜是进行大数据计算时最经常遇到的问题之一。当我们在执行hiveql或者运行mapreduce作业时候,如果遇到一直卡在map100%,reduce99%,查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大。一般就是遇到了数据倾斜的问题。数据倾斜其实是进行分布式计算的时候,某些节点的计算能力比较强或者需要计算的数据比较少,早早执行完了,某些节点计算的能力较差或者由于此节点需要计算的数据比较多,导致出现其他节点的reduce阶段任务执行完成,但是这种节点的数据处理任务还没有执行完成。

2.产生原因

1)key分布不均匀

2)业务数据本身的特性

3)建表时考虑不周

4)某些sql语句本身就有数据倾斜,如下表所示:

关键词

情形

后果

join

中一个表较小,但是key集中

分发到某一个或几个reduce上的数据远高于平均值

join

大表与大表,但是分桶的判断字段0值或空值过多

这些空值都由一个reduce处理,非常慢

group by

group by 维度过小,某值的数量过多

处理某值的reduce灰常耗时

count distinct

某特殊值过多

处理此特殊值reduce耗时

(待完善)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值