首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop-2.4.1用于平衡减速器的自定义分配器

Hadoop-2.4.1用于平衡减速器的自定义分配器
EN

Stack Overflow用户
提问于 2014-11-18 05:33:08
回答 1查看 481关注 0票数 0

正如我们所知道的,在hadoop的洗牌阶段,每个还原器都从映射器的所有输出(中间媒体数据)中读取数据。

现在,我们还知道,在默认情况下,哈希分区用于还原器。

我的问题是:我们如何实现一个算法,例如,位置感知?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-18 10:13:45

总之,你不应该这么做。

首先,您无法控制映射器和减法器在集群上的执行位置,因此,即使单个映射器的全部输出将转到单个减法器上,它们在不同主机上的可能性也很大,并且数据将通过网络传输。

第二,要使还原程序处理映射器的整个输出,首先必须使映射程序处理信息的正确部分,这意味着您必须通过对数据进行分区预处理,然后为每个分区运行一个映射程序和一个还原程序,但是这个预处理本身将占用大量的资源,因此它基本上是没有意义的。

最后,你为什么需要它?映射约简的主要概念是使用键值对进行操作,还原器一般应该聚合映射器为相同键输出的值的列表。下面是使用哈希分区的原因:在K减缩器之间分配N键。使用不同类型的除法器是非常罕见的情况。例如,如果您需要数据局部性,您可能更喜欢使用MPP数据库而不是Hadoop。

如果您确实需要一个自定义分区器,下面是如何实现它的一个示例:http://hadooptutorial.wikispaces.com/Custom+partitioner。没有什么特别之处,只需返回减速机编号根据键和值传递和减速器的数量。使用主机名的散列代码除以减法器的数量(%)将使单个映射器的全部输出转到单个减法器上。此外,您还可以使用进程PID %的减速器数量。但在做这件事之前,你必须检查一下,你是否真的需要这样的行为。

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

https://stackoverflow.com/questions/26987284

复制
相关文章

相似问题

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