2017-02-23 35 views
1

我需要一些幫助,瞭解如何在我的應用程序中獲取正確數量的Map和Reduce任務。 有什麼方法可以發現這個號碼嗎?MapReduce任務的數量

感謝

+0

你的工作的計數器將顯示在作業中使用的映射器和減速器的實際數量 –

回答

0

map任務的個數等於輸入的號碼拆分任何工作,你可以找到發現映射器,你可以設置明確減速的數數它們中的任何一個。此外,一旦您運行map reduce作業,您可以觀察生成的日誌以查找作業中的mappers和reducers的數量。

2

這是不可能得到的地圖的實際數量和減少任務執行之前的應用程序中,由於任務失敗,隨後重新嘗試和推測執行的嘗試的因素不能在執行之前被精確地確定,近似數字任務可以派生出來。

MapReduce作業的Map任務總數取決於其輸入文件及其FileFormat。
對於每個輸入文件,都會計算拆分並調用每個輸入拆分的一個映射任務。

分割尺寸將根據被計算,

input_split_size = max(mapreduce.input.fileinputformat.split.minsize, min(mapreduce.input.fileinputformat.split.maxsize, dfs.blocksize)) 

如果屬性

  • mapreduce.input.fileinputformat.split.minsize
  • mapreduce.input.fileinputformat.split.maxsize

    處於其默認狀態下,輸入分割尺寸要文件將近似等於其blocksize考慮到文件是可拆分的。

的映射任務的總數將等於求和輸入的數的每個文件分割。
減少任務的總數,它是1(默認)或等於mapreduce.job.reduces

2

數映射器依賴於HDFS的文件塊大小(默認)和輸入分配大小(如果我們爲非默認指定)。

如果假設你有128MB的文件是存在的,HDFS塊的大小爲64MB然後一個數字地圖的任務將是2,因爲默認行爲。

如果您的輸入分割大小爲32MB,但hdfs塊大小爲64MB,那麼地圖任務的那個時間數將爲4.因此,地圖任務取決於上面定義的全部三個因子。

減少任務的數量取決於conf.seNumReduceTask(num)mapreduce.job.reducesmapred.reduce.tasks已棄用)。