2013-05-11 69 views
2

我想知道,如果以下方面可以在Hadoop中进行:Hadoop的自定义分区

假设我有3台机器,它会跑3个地图功能和3个减少功能,在正常情况下,一张地图和一个减少每台机器的功能。 我有一组键:A,B,C,D,E,F,G,H,I.

映射阶段后,可以强制所有的值与键A,B,C将始终驻留在机器1上,并且所有的数值通过键D,E,F将始终驻留在机器2等上?

当前我使用基于hash(key)的分区器。 这项工作将运行不止一次,我不希望在机器1上只有机器3上的按键G,H,I具有数值。

回答

1

使用自定义分区程序,您可以定义A,B和C都将被发送到同一个reducer,但是您无法控制群集中的哪个节点将实际运行该reduce任务。

您还应该注意,即使您定义A,B和C都将被发送到同一个减速器,也有可能D,E和F也会被发送到同一个减速器 - 如果您只配置例如单个减速器。