大数据学习之路22-数据倾斜场景

在大数据处理中,遇到数据倾斜问题,如单词'a'过多导致处理不均衡。通过引入Combiner减轻Reducer负担,但效果有限且可能引入新问题。更好的解决方案是通过在key上拼接随机字符串或数字进行数据打散,再进行两次MapReduce操作,第二次去除拼接部分,以实现reduce worker的负载均衡。
摘要由CSDN通过智能技术生成

比如说又以下数据:

a a a a a a a a a a a a a a a a a a a a b

a a a a a a a c c b b c h h f d s h j

需要做wordcount,但是会有一个问题存在:a特别多,负责处理a这个单词数据的reduce worker就会很累(负载不均衡,过大)

这时有一种解决办法就是使用Combiner,其实Combiner和Reducer的写法一模一样,只不过Combiner是提供给map task使用的而Reducer是提供给reduce使用的。Combiner的作用是在将任务交给Reducer使用之前做一些合并操作,减轻Reducer的负担,但是这种方法解决负载的问题也不是很好。而且这种方法一般也不会轻易使用,因为这种方法存在一些问题(如下图):

更好一点的方法是这样的思路:

将key进行打散(具体方案:给key拼接一个随机字符串或数字),以均衡reduce端worker的负载,分两次进行mapreduce,第二次mapreduce的时候将拼接的随机字符串或数字去除即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来@音律

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值