数据倾斜---hadoop中的Reducer

本文探讨了大数据处理中常见的数据倾斜问题及解决方案,包括调整Reducer数量、自定义分区、使用Combiner等策略。同时,针对Join操作引起的效率低下和数据倾斜,介绍了Mapside join和Reduceside join的区别及优化方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数据倾斜:hash分区,有可能大量的key进入同一个Reducer

解决数据倾斜:
(1)//多个Reducer处理同一个分区
(2)自定义分区
(3)增加或者减少reducer的数量(hash分区有效)
(4)硬件上:增加机器的jvm内存
(5)去除噪音数据
(6)重新定义key:比如改变key中数据的顺序
比如先在传输的时候给key加一个随机数zhang->20-zhang在后面处理的时候,将随机数去掉,结果数据可以再进行一次运算
(7)Combiner:相当于在Mapper端提前干了Reducer的活,对相同的key提前进行聚合,也可以解决数据倾斜问题
(8)Reduce side join数据问题
Map side join

2.Join问题:
将多份数据进行关联处理时,框架提供的 join 操作一般会将所有数据根据 key 发送到
所有的 reduce 分区中去,造成大量的网络以及磁盘IO消耗,运行效率极其低下,
还可能造成数据倾斜,这个过程一般被称为 reduce-side-join。
当海量数据中匹配少量特定数据:

在这里插入图片描述

解决方式:将小表数据缓存到map端,这样map端获取大表数据后,和自身的小表数据做join,省去了reduce端的join过程,运行时间得到大量缩短,根据不同数据可能会有几倍到数十倍的性能提升,同时也可以解决数据倾斜问题

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值