2013-05-11 54 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也會被髮送到同一個減速器 - 如果您只配置例如單個減速器。