2017-04-26 43 views
1

假設hadoop系統中的節點有8GB內存可用。瞭解Hadoop中map和reduce任務的數量MapReduce

如果任務跟蹤器和數據節點消耗2GB,並且每個任務所需的內存爲200MB,那麼可以開始多少個map和reduce?

8-2 = 6GB

所以,6144MB/200MB = 30.72

所以,30總Map和Reduce任務將開始。

我是對的還是我錯過了什麼?

回答

1

映射器和縮減器的數量不是由可用資源決定的。您必須通過調用setNumReduceTasks()來設置代碼中的縮減器數量。

對於映射器的數量,它更復雜,因爲它們是由Hadoop設置的。默認情況下,每個輸入分割大致有一個地圖任務。您可以通過更改默認塊大小,記錄讀取器,輸入文件數量來調整。

您還應該在hadoop配置文件中設置最大數量的map任務,並減少併發運行的任務以及分配給每個任務的內存。最後兩種配置是基於可用資源的配置。請記住,map和reduce任務在CPU上運行,因此實際上受限於可用內核的數量(一個內核不能同時運行兩個任務)。

This guide可能會幫助你更多的細節。

+0

謝謝!但是,考慮到上述資源量,我們是否可以找出可以使用給定資源運行的最大地圖數量和減少任務數量? – user5155835

+0

@ user5155835我不認爲有一種(簡單)的方式來以編程方式找到它。你的想法幾乎是正確的,但你也必須考慮可用的內核數量。 – vefthym

+0

不是以編程方式,而是在理論上,與給定的資源? – user5155835