2
在爲MapReduce作業編寫代碼時,如果我們手動設置縮減器的數量,則發送到某個縮減器的數據可能很大。在這種情況下,Reducer任務是否可以同時在多個節點上運行?也許通過將List<Value>
中的數據除以對應的密鑰,然後在內部進行合併?reducer可以動態地使用多個節點嗎?
如果reducer不能自動縮放它要使用的節點數量,那麼我們如何處理可能存在對應於鍵的值的不均勻分佈的情況? default hadoop MapReduce partitioner分區的基礎上散列的值,並沒有考慮到List<Value>
對應的密鑰的大小。
好的,但有兩件事。 1.是否可以定義分配給reducer的節點資源的百分比? 2.如果我們必須在某種情況下手動設置減速器的數量,那麼可以採取什麼措施來減輕某些減速器負擔過重的問題? –
@DhruvMullick恐怕我沒有答案1.關於2.如果你不想採樣,你可以手動設置一個自定義的分區器,將你期望的最重的負載分配給一個reducer他們自己的(即,沒有其他鍵應該去同一個reducer)。例如,在WordCount中,將從最常見的字母(例如字母'')開始的所有單詞隨機地發送給它們自己的所有單詞和所有其他單詞。 – vefthym