MapReduce 数据分布倾斜性

数据分布倾斜性指的是数据分布过度集中于数据空间的某端,造成“头重脚轻”或者“比萨斜塔”等不均匀的分布特点。数据分布倾斜性将造成运算效率上的“瓶颈”和数据分析结果的“以偏概全”。


效率上的“瓶颈”

假如在大型商场中,共有A,B1,B2..B9十家店铺,其中A店铺中有99W商品,B1,B2.B9这九家店铺分别有1W商品。我们要统计商场中商品总数,计算初,采用HASHMAP作为存储结构,其中Key:店铺 Value:商品。我们的计算过程是先统计每个店铺的商品总数,最后将结果累加。可以发现,由于A99W商品,按照1+1的累积方式(假如1+1耗时1秒),我们要加99W1才能得到A店铺的商品总数(总耗时99W秒),而B1,B2.B9只需分别累加1W1(分别耗时1W秒),而为了得到商场中的商品总数,我们必须等待所有店铺都分别累计结束才能处理总和,显而易见,此时运算瓶颈便集中在A店铺的商品累计上。

这类状况经常发生在分布式运算过程中,比如Hadoop Job计算,因为map/reduce 过程中是以Key-value形式来处理数据,假如某key下的数据量太大,会导致整个计算过程中move/shuffle/sort的耗时远远高于其他key,因此该Key变成为效率“瓶颈”。一般解决办法是,自定义partitioner,对所有的Value进行自定义分组,使得每组的量较平均,从而解决时间瓶颈问题。


数据分析结果的“以偏概全”

同样使用上述的“商场”案例,并且在此基础上我们假设A店铺,B9店铺是卖低端商品,而B1,B2..B8是卖高端商品,销量较小。如果我们要根据商品销售状况分析店铺在买家当中的受欢迎程度。由于A店铺本身商品量大,而且定位的销售价位是属于薄利多销,如果只从销售量的考虑,我们会以为A店铺在商场中是最受买家欢迎的,造成“片面”的分析结果。

其实,遇到这种情况,我们首先的分析卖家性质和买家性质,并且使用相对量来作为评估值,比如A店铺卖低端商品,日销售量1W商品,1W/99W<1%, B9店铺卖低端商品,日销售量5K商品,5K/1W=50%,所以在低端买家中,低端商品店铺B9应该是最受欢迎的。

posted on 2011-12-22 10:17 Ric Dong 阅读(309) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

留言簿

文章档案(2)

搜索

最新评论