2

我想知道是否可以在 Hadoop 中完成以下方面:

假设我有 3 台机器,它将运行 3 个 map 函数和 3 个 reduce 函数,在正常情况下,每台机器上都有一个 map 和一个 reduce 函数。我有一组键:A、B、C、D、E、F、G、H、I。

在映射阶段之后,是否可以强制所有带有键 A、B、C 的值将始终驻留在机器 1 上,而所有带有键 D、E、F 的值将始终驻留在机器 2 上等?

目前我使用基于hash(key). 这项工作将运行不止一次,我不想在机器 1 上使用键 G、H、I 的值,只在机器 3 上。

4

1 回答 1

1

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

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

于 2013-05-11T10:27:23.590 回答