2013-08-27 67 views
0

Hadoop如何決定no。減肥者運行的問題?在什麼基礎上,它決定了否定分割符或不符合。簇大小或什麼的? Explian下面的問題 - 我有640MB的輸入文件,我有64MB的塊大小。我的羣集大小是5個節點羣集。我已經將我的輸入文件寫入HDFS,它有10個數據塊。如果我爲寫入的輸入文件運行我的wordcount程序,那麼請告訴我有多少個Mappers和多少個Reducer將運行。Hadoop如何決定no。的減速器運行給定塞納里奧?

+0

看到這個:http://stackoverflow.com/questions/16414664/pseudo-distributed-number-map-and-reduce-tasks/16415522#16415522 – Amar

回答

0

鑑於映射器和縮減器號碼可以在conf文件中指定,因此沒有唯一的答案。但默認設置爲:
640Mb和64Mb塊= 10個映射器 和1個縮減器。

爲了更準確的答案,映射器的數量根據
File total size/File block size 設置,但你可以設置配置變量來改變像它的行爲:
地圖最小分割尺寸,地圖最大分割尺寸,最小圖號等... 如果你想知道更多關於這些變量看看mapred defaulthdfs defaultcore default 順便說一下,有很多關於地圖和減少堆棧數量的問題。

+0

謝謝布魯日。你說只有1個reducer,如果我將配置文件中的reducer數量指定爲10個reducer,那麼Hadoop會保證它使用10個reducer?通過我的羣集大小很小? – user2183044

+0

現在來Mappers,我知道Mappers將基於InputFormat和Inputsplit工作。假設我的Block Size是64MB,我可以修改輸入分割大小爲64KB或128MB嗎?在那種情況下將會運行多少個映射器?我們需要在這裏輸入什麼?這個問題可能看起來很簡單,我很困惑。請澄清。 – user2183044

+1

在縮小階段,您將獲得每個唯一映射輸出鍵的減少任務。 Reducer運行減少任務,因此如果有足夠的任務用於10個reducer,則所有運行都會運行。你的硬件顯然會影響你的算法的性能。似乎很明顯,減少器/節點的數量應該少於或等於核心/節點的數量。 – DDW

1

根據IputFormatClass的選擇決定地圖數量。默認情況下它是TextInputFormat類,它將創建與塊數相同數量的地圖。如果只有最後一條記錄在兩個塊中斷開(在這種情況下,映射數將是塊數減1),則會有例外。數字縮減器是一個配置選項,甚至可以在作業提交期間指定。默認情況下,reducer的數量是1。

+1

注意到mappers的數量 - 文件沒有使用不可壓縮的壓縮算法進行壓縮(例如gzip) –

0

將塊大小從64 MB更改爲128 MB將會將塊數從10減少到5.您可以在配置中僅指定多個減速器,但無法通過參數控制減速器的數量。地圖數量取決於輸入分割和輸入格式的數量。我建議減少的數量少於你的簇大小。在MapReduce 2框架工作中,容器控制正在使用的資源,以便您可以根據數據估計來調整資源大小,並根據數據大小啓動儘可能多的減少器,並降低功能複雜性。

相關問題