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解决方案
无法解决