MapReduce数据倾斜(简单理解)

一:发生场景

电商系统中,A类商品访问量多,B类商品访问量少,在统计AB访问量的时候,就会在Reduce端出现数据的倾斜,导致A计算的时候效率低,而B计算的时候效率高。

二:原理

不同类的数据分布本身就是不均匀的,在计算的时候会导致一边数据计算效率低,一边计算效率高。

三:后果

数据倾斜度越大,MR中数据处理效率越低

四:数据倾斜的发生地


4.1Reduce端倾斜

4.1.1描述

绝大部分的倾斜发生在Reduce端,因为源数据更多是没有被分类混杂的,而数据进入Reduce之前会经过分类,经由分类后机会出现倾斜。

4.1.2应对方案

自定义均衡的分区规则:return 随机数,使得数据均衡,多次MR
  • 第一阶段MR:数据经由分区,是无法确定数据流向那个分区的,使得数据到达Reduce的时候是几乎均匀的,
  • 第二阶段MR:对第一次的MR结果再次MR,此时分区规则不用自定义,此时Reduce中计算的时候就会减少计算时间。该方案适用倾斜度大的时候,虽然添加一个MR会降低效率,但是此时好过于大量数据的计算。

4.2Map端数据倾斜

4.2.1发生概率

极少发生

4.2.2发生条件

  • 多元输入,指定多个路径输入多种格式的数据,只有一个文件输入没有倾斜之说,一个文件会被均匀切分
  • 这些文件不可被切切分,如果可切的话整体还是较为平均
  • 这些文件大小不均等

4.2.3解决方案

无法解决


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务