首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop处理数据倾斜在减速器中的应用

Hadoop处理数据倾斜在减速器中的应用
EN

Stack Overflow用户
提问于 2015-09-17 10:13:38
回答 2查看 3.4K关注 0票数 0

我试图确定hadoop (Hadoop2.0.0 mrv1)中是否有某些钩子可用于处理减速器的数据倾斜。场景:设置一个自定义复合键和分区器,以便将数据路由到还原器。为了处理奇怪的情况,但很可能是一百万个键和大值的情况,最终在同一个减速器上结束,需要某种启发,以便进一步划分这些数据以产生新的减速器。我在想一个两步的过程

  1. 将mapred.max.reduce.failures.percent设置为10%,并让作业完成
  2. 通过通过驱动程序传递配置来重新运行失败数据集上的作业,这将导致我的分区程序然后随机地划分被扭曲的数据。分区器将实现可配置接口。

有没有更好的办法[另一种方法]?

可能的反解决办法可能是编写映射器的输出,并从另一个地图工作中完成减速器的工作,但不想对namenode施加压力。

EN

回答 2

Stack Overflow用户

发布于 2015-09-17 18:49:18

这个想法突然出现在我的脑海中,我不知道它有多好。

假设您正在使用10个映射程序运行作业,但由于数据偏斜而失败。这个想法是,您将还原器的数量设置为15,并定义每个映射器中的最大减速器(键、值)应该转到哪个减速机。您可以将该信息保存在自定义分区程序类中的散列图中。一旦一个特定的减速机达到极限,您就开始发送下一组(键,值)对到另一个减速器,从额外的5减速机,这是我们为处理偏度而保留的。

票数 2
EN

Stack Overflow用户

发布于 2015-09-17 19:47:38

如果进程允许,使用Combiner (减缩类型函数)可以帮助您。如果您在Mapper端预先聚合数据。然后,即使您的所有数据都以相同的减缩器结束--数据量可能是可管理的。

另一种方法是重新实现分区器,以避免出现倾斜的情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32627836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档