2017-07-26 124 views
2

我想了解如何可以縮小作業開始執行任務以及如何控制MR作業的數量。控制地圖的數量並減少產生的作業?

假設我在HDFS中有1TB文件,並且我的塊大小爲128MB。 如果我將輸入分割大小指定爲256MB,則對於此1TB文件上的MR任務,將開始多少個Map和Reduce作業。根據我的理解,這取決於分割大小。即Map作業的數量=文件/分割大小的總大小,並且在這種情況下,其結果爲1024 * 1024 MB/256 MB = 4096。所以hadoop啓動的map任務的數量是4096.
1)對不對?

2)如果我認爲這是一個不合適的數字,我可以通知hadoop開始減少數量的工作或甚至更多的工作。 如果是的話如何?

如何減少作業的數量產生,我認爲這完全由用戶控制。
3)但是,我應該如何以及在哪裏提及所需的減速機作業數量。

+0

[設置地圖的任務數量,降低任務]的可能的複製(https://stackoverflow.com/questions/6885441/setting-該用戶號碼的地圖任務,和減少任務) –

回答

3

1.是的,你是對的。映射器數量=(數據大小)/(輸入分割大小)。所以,你的情況這將是4096

  • 按我的理解,之前的Hadoop-2.7,你只能提示系統由conf.setNumMapTasks(int num)創建映射器的數量,但映射器將通過創建他們自己的。從hadoop-2.7開始,你可以通過mapreduce.job.running.map.limit來限制mapper的數量。看到這個JIRA門票

  • 默認情況下reducer的數量是1.您可以更改job.setNumReduceTasks(integer_numer);

  • 您也可以提供從CLI這個參數 -Dmapred.reduce.tasks=<num reduce tasks>

    相關問題