您的位置 首页 大数据运维

怎么解决 MapReduce 的数据倾斜?

怎么解决 MapReduce 的数据倾斜?

现象:Mapreduce 程序在运行的时候,运行了大部分,但是还有部分 reduce 还在运行,甚至长时间运行,最终导致整个程序运行时间很长才结束。 产生原因:reduce 程序处理的 key的条数比其他 key 的条数大很多,这也就造成了分配到数据巨大的 key 的节点长时间运行。

本质讲数据倾斜就是数据分布不均。 解决办法:

1)增加 reduce 的 jvm 内存
2)增加 reduce 个数
3)自定义 partition
4)设定 combiner
5)如果数据倾斜很大的话,将那部分倾斜的数据可以单独过滤出来做计算 或者自定义分区
分散倾斜的数据
6)针对个别 key 或者少量 key 数据量特别大的,可以对该 key 进行改造,生成多个新的 key
分别处理,然后再进行聚合处理(分而治之)

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章