hadoop自定义分区器

tf7tbtn2  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(470)

我想知道在hadoop中是否可以实现以下方面:
假设我有3台机器,它将运行3个map函数和3个reduce函数,在正常情况下,每台机器上运行一个map函数和一个reduce函数。我有一套钥匙:a、b、c、d、e、f、g、h、i。
在Map阶段之后,是否可以强制所有带有键a、b、c的值将始终驻留在机器1上,所有带有键d、e、f的值将始终驻留在机器2上等等?
目前我使用基于 hash(key) . 此作业将运行多次,并且我不希望在计算机1上具有键g、h、i的值,仅在计算机3上。

rta7y2nd

rta7y2nd1#

使用自定义分区器,您可以定义a、b和c都将被发送到同一个reducer,但是您无法控制集群中的哪个节点将实际运行reduce任务。
您还应该注意,即使您定义a、b和c都将被发送到同一个reducer,也可能d、e和f也将被发送到同一个reducer—例如,如果您只配置一个reducer。

相关问题